• <MyBatis>入门一 HelloWorld


    1.HelloWorld

    导入依赖

            <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.6</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.47</version>
            </dependency>

    创建一个员工数据库

    CREATE TABLE `tbl_employee` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `last_name` varchar(255) DEFAULT NULL,
      `gender` char(1) DEFAULT NULL,
      `email` varchar(255) DEFAULT NULL
    ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8

    编写实体类

    public class Employee {
    
        private Integer id;
    
        private String name;
    
        private Character gender;
    
        private String email;

      ... }

    创建一个全局配置文件 mybatis-config.xml

      全局配置文件的的具体参数后面讲

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    
    <configuration>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
            </environment>
        </environments>
    
        <!-- 将写好的mapper注册到全局配置文件中 -->
        <mappers>
            <mapper resource="EmployeeMapper.xml" />
        </mappers>
    </configuration>

    编写映射文件Mapper

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <!--namespace 名称空间
             作用:用于绑定接口,即使用namespace将映射文件和接口绑定,就不需要写实现类了
         指定为接口的全类名
    --> <mapper namespace="org.maple.dao.EmployeeMapper"> <!--id 唯一标识 :对应接口中的哪个方法 resultType 返回类型,对应实体类的Employee --> <select id="selectEmp" resultType="org.maple.pojo.Employee"> select id,last_name name,email,gender from tbl_employee where id = #{id} </select> </mapper>

    编写测试类

    public class MybatisTest {
    
        @Test
        public void test01() throws IOException {
            //读取配置文件
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //创建sqlSessionFactory
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            //获取sqlSession实例,能直接执行已经映射的sql语句
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //执行查询方法
            try {
                Employee employee = sqlSession.selectOne("org.maple.dao.EmployeeMapper.selectEmp", 1);
                System.out.println(employee);
            }finally {
                //关闭sqlSession
                sqlSession.close();
            }
        }
    }

    2.通过接口的方式

    员工Crud接口

    public interface EmployeeMapper {
    
        Employee getEmpById(Integer id);
    }
    员工Mapper文件
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <!--namespace 名称空间
             作用:用于绑定接口,即使用namespace将映射文件和接口绑定,就不需要写实现类了
    -->
    <mapper namespace="org.maple.mapper.EmployeeMapper">
    
        <!--id 唯一标识 :对应接口中的哪个方法
            resultType 返回类型,对应实体类的Employee
        -->
        <select id="getEmpById" resultType="org.maple.pojo.Employee">
            select id,last_name name,email,gender from tbl_employee where id = #{id}
        </select>
        
    </mapper>

    测试方法

    public class MybatisTest {
    
        @Test
        public void test01() throws IOException {
            //读取配置文件
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //创建sqlSessionFactory
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            //获取sqlSession实例,能直接执行已经映射的sql语句
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //执行查询方法
            try {
           //获取接口的代理对象 EmployeeMapper mapper
    = sqlSession.getMapper(EmployeeMapper.class); Employee emp = mapper.getEmpById(1); System.out.println(emp); }finally { //关闭sqlSession sqlSession.close(); } } }
    
     1、接口式编程
    	原生:		Dao		====>  DaoImpl
    	mybatis:	Mapper    ====>  xxMapper.xml
     2、SqlSession代表和数据库的一次会话;用完必须关闭;
     3、SqlSession和connection一样都是非线程安全。每次使用都应该去获取新的对象。
     4、mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象。
     		(将接口和xml进行绑定)
     		EmployeeMapper empMapper = sqlSession.getMapper(EmployeeMapper.class);
     5、两个重要的配置文件:
     		mybatis的全局配置文件:包含数据库连接池信息,事务管理器信息等...系统运行环境信息
    		sql映射文件:保存了每一个sql语句的映射信息:
    					将sql抽取出来。	
          
     1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源一些运行环境信息
     2、sql映射文件;配置了每一个sql,以及sql的封装规则等。 
     3、将sql映射文件注册在全局配置文件中
     4、写代码:
          1)、根据全局配置文件得到SqlSessionFactory;
    	2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查
    		一个sqlSession就是代表和数据库的一次会话,用完关闭
    	3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的。
    
  • 相关阅读:
    Android studio ButterKnife插件
    Android Studio Prettify 插件
    Android studio的主题颜色修改
    MeasureSpec 的三中类型
    android 加载远程Jar、APK
    android源码 键盘消息处理机制
    Android源码阅读笔记二 消息处理机制
    phpstrom 激活
    sublime vue 语法高亮插件安装
    mysql登录报错“Access denied for user 'root'@'localhost' (using password: YES”的处理方法
  • 原文地址:https://www.cnblogs.com/mapleins/p/10111826.html
Copyright © 2020-2023  润新知