文章目录
7.1 MyBatis的核心对象
7.1.1 SqlSessionFactory
SqlSessionFactory是MyBatis 框架十分重要的对象,他是单个数据库映射关系经过编译后的内存镜像,其作用是创建SqlSession。
通过XML配置文件构建出的SqlSessionFactory实例:
//读取配置文件
InputStream inputStream = Resources.getResourceAsStream("配置文件位置");
//根据配置文件构建SqlSessinFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
7.1.2 SqlSession
SqlSession
是Mybatis
框架的另一个重要的对象,他是应用程序与持久层之间执行交互操作的一个单线程对象,其主要作用是执行持久化操作。SqlSession
对象包含了数据库中所有执行Sql操作的方式,由于底层封装了JDBC连接,所以可以直接使用实例来执行已映射的Sql语句。
7.2 配置文件
7.2.1 主要元素
在MyBatis
框架的核心配置文件中。<configuration>
元素是配置文件的根元素,其他元素都要在<configuration>
元素内配置。
7.2.2 元素
<properties>
元素是一个配置属性的元素,该元素通常用于将内部的配置外在化,即通过外部的配置来动态的替换内部定义的属性。
<properties>
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="root" />
</properties>
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
7.2.3 元素
<settings>
元素主要用于改变MyBatis
运行时的行为,例如开启二级缓存,开启延迟加载等。这里我们先不做细讲。
7.2.4 元素
<typeAliases>
元素用于为配置文件中的java类型设置一个简短的名字,即设置别名。
<typeAliases>
<typeAlias alias="User" type="com.**.entity.User"/>
</typeAliases>
7.2.5 元素
<typeHandler>
元素在预处理语句中设置一个参数或者从结果集中取出一个值,都会用其框架内部注册的 typeHandler 进行相关处理。
<typeHandler>
的作用就是将预处理的语中传入的参数javaType转换为 jdbcType,或者从数据库取出结果时将jdbcType转换为javaType。
<typeHandlers>
<!--
当配置package的时候,mybatis会去配置的package扫描TypeHandler
<package name="com.dy.demo"/>
-->
<!-- handler属性直接配置我们要指定的TypeHandler -->
<typeHandler handler=""/>
<!-- javaType 配置java类型,例如String, 如果配上javaType, 那么指定的typeHandler就只作用于指定的类型 -->
<typeHandler javaType="" handler=""/>
<!-- jdbcType 配置数据库基本数据类型,例如varchar, 如果配上jdbcType, 那么指定的typeHandler就只作用于指定的类型 -->
<typeHandler jdbcType="" handler=""/>
<!-- 也可两者都配置 -->
<typeHandler javaType="" jdbcType="" handler=""/>
</typeHandlers>
7.2.6 元素
MyBatis
框架每次床架结果的对象新实例时,都会使用一个对象工厂(ObjectFactory)的实例来完成。MyBatis
中默认的ObjectFactory
的作用就是实例化目标类,它既可以通过默认构造器方法来实例,也可以在参数映射存在的时候通过参数构造方法来实例化。
在实际开发中不经常使用,我们只需了解即可。
7.2.7 元素
<MyBatis >
允许在已映射语句执行过程中的某一点进行拦截调用,这种拦截调用是通过插件来实现的。
<plugins>
元素的作用是配置用户所开发的插件。
7.2.8 元素
在配置文件中,<environments>
元素用于对环境进行配置。MyBatis
的环境配置实际上就是数据源的配置,我们们可以通过<environments>
元素配置多中数据源,即配置多种数据库。
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
7.2.9 元素
在配置文件中, <mappers>
元素用于指定MyBatis 映射文件的位置,一般可以使用以下4种方法引入映射器文件:
1.使用类径引入:
<mappers>
<!-- class 级别的指定 -->
<mapper class="com.bestcxx.stu.springmvc.mapper.UserModelMapper"/>
</mappers>
2.使用本地文件引入:
<mappers>
<!-- 使用这个方案,可以单独指定Mapper的位置 -->
<mapper resource="file:///D:/mybatis/mappings/UserModelMapper.xml"/>
</mappers>
3.使用接口类引入:
<mappers>
<!-- 使用这个方案,可以单独指定Mapper的位置 -->
<mapper resource="mybatis/mappings/UserModelMapper"/>
</mappers>
4.使用包引入:
<mappers>
<package name="com.bestcxx.stu.springmvc.mapper"/>
</mappers>
7.3 映射文件
7.3.1 主要元素
在映射文件中, 元素是映射文件的根元素,其他元素都是它的子元素。
7.3.2 元素
元素用于查询语句,他可以帮我们从数据库中读取出数据。
<select id="getCount" resultType="Integer" parameterType="com.whc.noteserver.param.NoteBookParam">
select count(*) from note_t_notebooks where isdelete=0 and userid=#{userid}
</select>
7.3.3 元素
元素用于映射插入语句,在执行完元素中定义的SQL语句后,会返回一个表示插入记录数的整数。
<insert id="addNoteBook" parameterType="com.whc.noteserver.entity.NoteBook">
insert into note_t_notebooks (id,name,addtime,isdelete,userid) values(#{id},#{name},#{addtime},#{isdelete},#{userid})
</insert>
7.3.4 元素
与 类似,在执行完之后,也会返回一个表示影响记录条数的整数。
<!-- //查询userName -->
<update id="updateNoteBook" parameterType="com.whc.noteserver.entity.NoteBook" >
update note_t_notebooks set name=#{name} where id=#{id}
</update>
7.3.5 元素
避免重复代码,造成代码臃肿。 元素的作用就是定义可重复利用的Sql语句代码片段,然后在其他语句中引用这一代码的片段。
<sql id="customer">id,username,jobs,phone</sql>
<select id="getCount" resultType="Integer" parameterType="com.whc.noteserver.param.NoteBookParam">
select <include refid="customerColumns"> from note_t_notebooks where isdelete=0 and userid=#{userid}
</select>
7.3.6 元素
元素表示映射结果集,主要作用是定义映射规则,级联的更新一集定义类型转化器等。这里我们只需要了解即可。