MyBatis-第三章
入参的类型是对象
- 新增的参数是对象
- 空值的处理,占位符
字段,jdbcType=VARCHAR 字符串
字段,jdbcType=DATE 日期
字段,jdbcType=INTEGER 数值 - 插入全部值时,可以不处理空值
log4j日志记录
可以记录不同级别的日志信息,以备排错和后续信息参考
1. 配置log4j.properties配置文件,放置在根目录下
日志全局设置:log4j.rootLogger=level ,console,stdout
日志等级level: DEBUG< INFO< WARN< ERROR 从低到高
变量console - 输出到console控制台
变量stdout – 输出到本地文件
2. 添加jar包
3. 正常启动
MyBatis缓存机制
1. 一级缓存
一级缓存基于MyBatis自带的PerpetualCache,是HashMap本地缓存,作用范围为session内,当session刷新或关闭后,该session中的所有cache就被清空。
2. 二级缓存
二级缓存就是全局缓存,它超出session的范围之外,可以被所有SqlSession共享
配置步骤:
1. 在mybatis-config.xml中设置
注意顺序,在文件开始位置
2. 在Mapper.xml启用缓存功能
3. 实体类实现Serializable 接口
将实体类序列化
4. 开启debug日志级别,在控制台中查看信息
Redis 非关系型数据,K/V形式存储格式
动态SQL
1. 模糊查询
#{value} 以?的方式传参到数据库 ‘value’
${id} 以拼接的方式传参到数据库 value
2. where
个人作业
1. MyBatis对象入参实例
<insert id="insertBook">
insert into book (book_id,book_name,book_auth,book_brief)
values(seq_bank_account.nextval,#{bookName,jdbcType=VARCHAR},#{bookAuth,jdbcType=VARCHAR},#{bookBrief,jdbcType=VARCHAR})
2. 日志的配置和功能
需要加载log4j.properties配置文件,放于根目录
添加相应的jar包
设置level等级设置,设置自己所需要的等级,规律如下
DEBUG< INFO< WARN< ERROR
进行记录相关的程序运行所需要的的信息进行纪录
3. MyBatis的缓存机制
mybatis提供查询缓存,用于减轻数据库压力,提高数据库性能
mybatis提供一级缓存和二级缓存
一级缓存:sqlsession级别的缓存
在操作数据库时,需要构造sqlsession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据
不同的sqlsession之间的缓存区域是互相不影响的。
二级缓存:mapper级别的缓存
多个sqlsession去操作同一个mapper的sql语句,多个sqlsession可以共用二级缓存,所得到的数据会存在二级缓存区域,
二级缓存是跨sqlsession的
二级缓存相比一级缓存的范围更大(按namespace来划分),多个sqlsession可以共享一个二级缓存
4. MyBatis动态SQL示例
<select id="selectlike" resultMap="BaseResultMap">
select * from book where book_name like '%${bookName}%'
</select>
<!-- 多条件查询中间包括以后必须添加and -->
<select id="selectCondition" resultMap="BaseResultMap">
select * from book
<where>
<if test="bookName !=null and bookName !=''">
book_name= #{bookName}
</if>
<if test="bookAuth !=null and bookAuth !=''">
and book_auth = #{bookAuth}
</if>
<if test="bookBrief !=null and bookBrief !=''">
and book_brief = #{bookBrief}
</if>
</where>
</select>