什么是mybatis?
- mybatis是一个优秀的持久层框架,它对jdbc操作数据库的过程进行了封装。
-mybatis也是一个ORM的半自动化框架,是开发者注重sql语句。
创建mybatis项目:
1. 创建maven项目:
点击file--》new--》project
点击maven--》project sdk--》选择自己的jdk
然后点击next,下一步
点击finish完成。
2.在Maven的pom文件中引入MyBatis需要用的jar包
3.创建表语句:
4.在resources下面创建Mybatis的核心配置文件:mybatis-config.xml
5.在bean(pojo)包中中创建数据库的表的实体类
6.在dao文件夹下面创建操作实体类的接口:UserDao
7.创建实现接口的xml文件:userDao.xml
8.在utils文件夹下面创建实际操作数据库的代码:
9.在test文件夹下面创建测试类,进行测试;
mybatis的配置文件:
1、给返回类型起别名
2、扫描映射器
生命周期和作用域:
SqlSessionFactory:
创建一个SqlSssionFactory工厂对象,相当于一个数据库连接池。
SqlSessionFactory一旦创建应该在运行期间存在,不能重新创建其他实例,因此它的作用域最简单的使用单例模式。
SqlSession:
- 连接到连接池的一个请求。
-SqlSession的实例不是线程安全的,因此不能被共享,所以它的最佳作用域是一个请求时,或者方法内。
-用完后需要及时关闭连接,否则资源会被占用。
日志工厂配置使用:
- SLF4J
- LOG4J 【掌握】
- LOG4J2
- JDK_LOGGING
- COMMONS_LOGGING
- STDOUT_LOGGING 【掌握】
- NO_LOGGING
STDOUT_LOGGING日志:
在mybatis核心配置文件中配置,STDOUT_LOGGING配置实例:
注意:要注意核心配置文件标签的顺序,名字不要写错,注意空格问题。
LOG4J日志:
什么是log4j?
通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
1.导入log4j依赖
2、在 resource目录下新建文件Log4j.properties
3、在Mybatis配置文件中设置日志为log4j
4、运行调试
log4j简单使用:
1.在要使用Log4j的类中,导入:import org.apache.log4j.Logger;
2.日志对象,参数为当前类的class
3.在需要打印日志的地方进行调用,如下图
RowBounds实现分页:
RowBounds:导入,import org.apache.ibatis.session.RowBounds;
其他接口类,xml照常写;
sql语句:
PageHelper分页插件:
第一步,引入分页插件依赖:
- 第二步:在mybatis的全局配置文件中配置PageHelper分页插件
Lombok插件:
第一步:idea安装lombok插件!
第二步:导入lombok依赖
第三步:在实体类上添加注解
一对多和多对一查询:
JavaType和ofType的区别?
JavaType和ofType都是用来指定对象类型的,但是JavaType是用来指定pojo中属性的类型,而ofType指定的是 映射到list集合属性中pojo的类型 。
association标签:用于处理对象的,属性的对象
collection标签::用于处理集合
一级缓存和二级缓存的区别:
2.二级缓存需要手动开启的,它是基于namespace级别的缓存,也叫全局缓存。
3.注意:我们在使用缓存的时候要记得序列化实体类,否则会抛出实体类未序列化异常
需要将实体类序列化:
4.总结:
- 二级缓存是基于namespace级别的,在同一个Mapper下有效。
- 所有的数据都会先放在一级缓存中。
- 只有当会话提交或关闭时,才会提交到二级缓存中。
5.缓存查询顺序:
1.先查二级缓存,二级缓存有数据就返回。
2.二级缓存没有查询一级缓存,一级缓存有数据也返回。
3.一级和二级缓存都没有,查询数据库。