查询和处理功能,二级缓存,逆向工程

就在今天,我完成了对mybatis的学习,我将再给自己一整天的时间练习mybatis的相关操作,但是在今天,我将对剩下的mybatis内容做出整理,他们分别为查询和处理功能,解决字段名和属性名不一致的方法,二级缓存,逆向工程

1.查询和处理功能

1.1通过list获取全部查询数据

如果想返回全部数据,以下这样是不行的

会报错

如果查询了多条数据, 要通过list或者map来接受

1.2通过map获取全部查询数据

1.3查询多条数据为map集合

放到集合里

1.4模糊查询

#{}应该这么写:

这么写也可以:

1.5.动态设置表名

1.6获取自动递增的主键

id有值了

2.解决字段名和属性名不一致的方法

字段名是依靠横线命名的,属性名是依靠驼峰命名的,怎么保持一致呢?

2.1为字段设置别名

其中empName为emp_name的别名

2.2设置配置文件全局变量

2.3resultmap设置

id设置主键的表名和字段名

result设置其他的表名和字段名

2.mybatis缓存

一级缓存是sqlsession级别的,通过同一个sqlsession查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问

使一级缓存失效的四种情况:

1.不同的sqlsession对应不同的一级缓存

2.同一个sqlsession但是查询条件不同

3.同一个sqlsession两种查询期间执行力任何一次增删改操作

4.同一个sqlsession两次查询期间手动清空了缓存

一级缓存是默认开启的,通过同一个sqlsession能够从一级缓存中获取数据

二级缓存

二级缓存是sqlsessionFactory级别,通过同一个sqlsessionFactory创建的sqlsession查询的结果会被缓存,此后若再次执行相同的查询语句,结果就会从缓存中获取

二级缓存开启的条件:

a.在核心配置文件中,设置全局配置属性cacheEnabled="true",默认true,不需要设置

b.在映射文件中设置标签<cache>

c.二级缓存必须在Sqlsession关闭或提交之后有效

d.查询的数据锁转换的实体类类型必须实现序列化的接口

使二级缓存失效的情况:

两次查询之间执行了任意的增删改,会使一级和二级缓存同时失效

让我们来看看效果

通过日志我们可以知道,第二次没有执行sql

3.逆向工程

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值