MyBatis的核心组件

作者: _借东西的小人 | 来源:发表于2019-11-07 15:32 被阅读0次

    SqlSessionFactory工厂接口

    使用MyBatis首先是实用配置或者代码去生产SqlSessionFacatory,而MyBatis提供了构造器SqlSessionFactoryBuilder.在MyBatis中,既可以通过读取配置的XML文件的形式生成SqlSessionFactory,也可以通过Java代码去生成(不推荐,需要修改的时候麻烦).MyBatis读取配置文件,通过Configuration类对象构建整个MyBatis的上下文.SqlSessionFactory的两个实现类SqlSessionManager和DefaultSqlSessionFactory(一般都用这个),在多线程中,SqlSessionManager的实现要依靠DefaultSqlSessionFactory.

    <?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>  
     <!--别名-->
    <typeAliases>
            <typeAlias type="com.zr.pojo.Role" alias="role"></typeAlias>
        </typeAliases>
        <!-- 对事务的管理和连接池的配置 -->  
        <environments default="development">  
            <environment id="development">  
                <transactionManager type="JDBC" />  
                <dataSource type="POOLED">  
                    <property name="driver" value="oracle.jdbc.driver.OracleDriver" />  
                    <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />  
                    <property name="username" value="ibatis" />  
                    <property name="password" value="ibatis" />  
                </dataSource>  
            </environment>  
        </environments>  
        <!-- mapping 文件路径配置 -->  
        <mappers>  
            <mapper resource="com/zr/mapper/UserMapper.xml" />  
        </mappers>  
    </configuration>
    

    SqlSession

    类似于一个JDBC中的Connection对象,代表着一个连接资源的

    映射器

    由一个接口和对应的XML文件(注解)组成,主要作用就是将SQL查询到的结果映射为一个POJO,或者将POJO的数据插入到数据库中,并定义一些关于缓存等的重要内容.
    用XML实现映射器
    用XML实现映射器分为两部分:接口和XML.首先定义一个映射器的接口

    public interface RoleMapper {
        public Role getRole(int id);
    }
    

    在用XML方式创建SqlSession中有这样一段代码:

    <mapper resource="com/zr/mapper/UserMapper.xml" />  
    

    它的作用就是引用一个XML文件.用XML方式创建映射器如下所示:

    <?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">
        <mapper namespace="com.zr.mapper.RoleMapper">
        <select id="getRole" parameterType="int" resultType="role">
            select id ,roleName ,note from mybatis_role where id = #{id}
        </select>
        </mapper>
    

    这样就完成了映射器的定义
    <mapper>元素中的属性namespace所对应的就是一个接口的全限定名,于是MyBatis上下文就可以通过它找到对应的接口.
    <select>元素表明这是一条查询语句,而属性id标识了这条SQL,属性parameterType="int"说明传递给SQL的是一个int类型的参数.而role是之前配置文件mybatis-config.xml配置的别名,指代的是com.zr.pojo.Role.
    #{id}表示的是要传递的参数.
    MyBatis在默认情况下提供自动映射,只要SQL返回的列名和POJO对应起来即可
    用Mapper接口发送SQL

    RoleMapper roleMapper = (RoleMapper) sqlSession.getMapper(RoleMapper.class); 
    Role role = roleMapper.findRoles("1").get(0);
    

    实例

    完整的代码已经上传到github上了
    github地址

    相关文章

      网友评论

        本文标题:MyBatis的核心组件

        本文链接:https://www.haomeiwen.com/subject/niuubctx.html