java学习笔记整理

MyBatis的核心组件

2019-11-07  本文已影响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地址

上一篇下一篇

猜你喜欢

热点阅读