0、认识mybatis
mybatis是个啥
- MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
- MyBatis 避免了几乎所有的 JDBC代码和手动设置参数以及获取结果集。
- MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
认识持久层
- 持久化指的是 将程序的数据在数据持久状态和瞬时状态转化过程
- 为啥要持久化? 有些数据不能断电即失;内存贵
- 持久层就是持久化数据的工作层
mybatis用来干啥
- 帮助程序员将数据存入数据库
- 简化传统的jdbc,更加简单、自动化
1、第一个mybatis程序
- 创建数据库、数据表
- 新建项目
- 导入MySQL、mybatis、Junit依赖
- 写mybatis配置文件,
注意注册mybatis.xml - 获取SQLSessionFactory对象、创建SqlSession
- 写实体类、Dao接口、Xml
xml注意 namespace绑定对应的Dao,返回类型,xml中id对应接口方法名
注意手动配置资源过滤,过滤Java下的xml
2、ResultMap 结果集映射
ResultMap 用于pojo与数据表字段的对应
(1)使用:
- 在xml中定义一个resultMap
- column属性对应数据表中字段
- property对应pojo的属性
3、配置
打印sql日志 在xml中,设置settings
驼峰
(1) 标准日志工厂实现
<setting name = "logImpl" value = "STDOUT_LOGGING"/>
(2) log4j实现
额外导入依赖包
配置log4j一些参数
setting 的 value = “LOG4J”
P.S.
日志级别 Error》 Warn 》 Info 》 Debug
大于等于当前设置的日志级别的日志才会输出
lombok使用
添加插件、添加依赖、添加Annotation使用
4、xml中一些标签
<where> 自动识别后面条件判断是否加where、and、or 可替代where 1=1
<choose> 相当于Switch选一个
<sql> 抽取公共部分, 在用<include refid ="">引用
<if> <foreach>
5、缓存
mybatis支持两层缓存
(1) 一级缓存
只在一个sqlSession 里面有效
默认开启
(2) 二级缓存
基于namespace的缓存(同一mapper)
使用:
- config.xml中setting使用缓存
<setting name = "cacheEnabled" value = "true"/>
在要使用二级缓存的mapper.xml中 设置
<cache/>
需要将实体类序列化
所有数据先存入一级缓存中
只有当前会话提交或关闭,一级缓存失效,才会提交到二级缓存中