1、工作原理
以下步骤:
1)mybatis读取核心配置文件(mybatis-config.xml)
2) 加载映射文件(Mapper.xml)
3) 构造会话工厂
4)创建会话对象
5)创建执行器
6)封装映射信息
7)操作数据库
8)输出结果映射
2、核心配置文件
使用mybatis框架解决持久化问题,主要涉及到3个核心对象:分别是SqlSessionFactoryBuilder、SqlSessionFactory、Sqlsession。
SqlSessionFactoryBuilder是SqlSessionFactory的构造者,SqlSessionFactoryBuilder通过build()方法构建SqlSessionFactory对象。
SqlSessionFactory用于创建Session对象,调用openSession()方法创建Sqlsession对象。
Sqlsession应用程序与持久层之间执行交互操作的对象,主要作用是执行持久化操作。
配置文件主要包含元素:
<properties>读取外部文件的配置信息。
<settings>改变Mybatis运行时的行为。
<typeAliases>给实体类设置一个简短的别名。
<environments>可以配置多套运行环境。
<mappers>引入Mybatis映射文件。
3、映射文件
映射文件常用元素:
<mapper>、<cache>、<cache-ref>、<select>、<insert>、<update>、<delect>、<sql>、<resultMap>
4、动态sql
动态sq可以灵活组装sql语句,常用元素有:
<if>判断语句,用于单条件判断。
<choose>用于多条件判断
<when>简化sql语句中的where条件判断
<trim>灵活的去除多余的关键字
<set>用于sql语句的动态更新
<foreach>循环语句
5、关联关系(一对一、一对多、多对多)
表与表之间存在三种关联映射关系,一对一、一对多、多对多。
一对一:在本类中定义与之关联的类的对象作为属性。
一对多:一个A类对象对应多个B类对象的情况。
多对多:在两个相互关联的类中,都可以定义多个与之关联的类的对象。
6、一级缓存和二级缓存
一级缓存是SqlSession级别的缓存,如果同一个Sqlsession多次执行完全相同的sqlSession语句,第一次执行就会写入到一级缓存中,第二次执行相同的查询语句,会直接读取一级缓存的中的数据,而不会再次去访问数据库。
二级缓存时Mapper级别的缓存,二级缓存的范围更大,多个SqlSession对象使用相同的Mapper,相同的查询语句去操作数据库,第一个SqlSession会将查询结果写入二级缓存,第二个SqlSession执行相同语句时,会直接读取二级缓存的数据。