Mybatis知识点总结
文章目录
1、mybatis组件
1、SqlSessionFactoryBuilder:构造器 (建造者模式)
SqlSessionFactoryBuilder是利用XML或者Java编码获得资源来构建SqlSessionFactory。通过它可以构建过个SqlSessionFactory。它的作用就是一个构建器,一旦我们构建了SqlSessionFactory,它的作用也就消失了.
2、SqlSessionFactory:工厂接口,由Builder生成
1、基础文件配置
typeAlias:定义元素别名,代表com.learn.ssm.chapter3.pojo.Role类可以使用自定义别名
environment:配置使用数据库的链接信息
dataSource:设置mubatis内部提供连接池的方式
mapper:引入自定的映射器配置文件
2、映射文件配置,配置结合业务所实现的SQL语句关系
3、SqlSession:会话,发送sql,返回结果
1、核心接口,等同于JDBC里面的Connection链接对象,
1、获取Mapper接口
2、发送SQL个数据库
3、控制数据库事务
2、DefaultSqlSession
单线程使用
3、SqlSessionManager
多线程使用
4、SQL Mapper:映射器,由java和xml文件构成,构造映射规则,发送SQL,执行完后返回结果
5、生命周期
1、 SqlSessionFactoryBuilder用于创建SqlSessionFactory,创建成功后即失效
2、SqlSessionFactory等同于多个数据库的连接池(整个mysql),在整个mybatis的生命周期中,如果创建多个,则会耗光连接池,造成应用崩溃,所以一般为单例模式,整个应用进行共享
3、SqlSession对应单个数据库进行的命令操作,如果使用完,则会把链接返还给SqlSessionFactory连接池
4、Mapper由session创建,一个mapper请求对应一个业务处理
2、mybatis核心对象
(1)SqlSession :作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能
(2)Executor : MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护
(3)StatementHandler : 封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数、将Statement结果集转换成List集合。
(4)ParameterHandler : 负责对用户传递的参数转换成JDBC Statement 所需要的参数,
(5)ResultSetHandler : 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合;
(6)TypeHandler : 负责java数据类型和jdbc数据类型之间的映射和转换
(7)MappedStatement : MappedStatement维护了一条<select|update|delete|insert>节点的封装,
(8)SqlSource : 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回
(9)BoundSql: 表示动态生成的SQL语句以及相应的参数信息
(10)Configuration : MyBatis所有的配置信息都维持在Configuration对象之中。
3、mybatis配置
1、配置文件
(1)配置文件结点顺序不能颠倒
(2)配置文件xml
configuration : 根结点
properties : 属性
settings : 设置
typeAliases:类型命名
typeHandlers : 类型处理器
objectFactory : 对象工厂
plugins:插件
environments: 配置环境
environments : 环境变量
transactionManager : 事物管理器
dataSource : 数据源
databaseIdProvider : 数据库厂商标识
mappers : 对象映射器
(3)简单配置实例
<?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>
<!-- 配置mybatis运行环境 -->
<environments default="development">
<environment id="development">
<!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
<transactionManager type="JDBC" />
<!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
<!-- POOLED 表示支持JDBC数据源连接池 -->
<!-- UNPOOLED 表示不支持数据源连接池 -->
<!-- JNDI 表示支持外部数据源连接池 -->
<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="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 告知映射文件方式1,一个一个的配置
<mapper resource="com/xhh/mybatis/mapper/UserMapper.xml"/>-->
<!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件
<package name="com/xhh/mybatis/mapper"/> -->
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
2、xml结点详细介绍(百度)
4、mybatis映射器
1、一个映射的xml对应一个接口类型,然后对应对象
2、select
1、默认sql返回的列名需要和对象属性一一对应上。
2、xml 结点属性配置
(1) id : 方法名称,供Mybatis 使用,如果相同的命名空间id不唯一,则会报错
(2) parameterType : 传递参数类型,可以是int,string,或者类类型。
(3) resultType : 返回结果类型,可以是int,string,或者类
(4) resultMap : 返回结果自定义使用,比如说使用typeHandler
(5) flushCac