多条件查询使用if标签,
where标签的作用:让where子句更加动态智能。
所有条件都为空时,where标签保证不会生成where子句;自动去除某些条件前面多余的and或or。
主要使用在update语句当中,用来生成set关键字,同时去掉最后多余的“,”
update banner
banner_img = #{bannerImg},
banner_dec = #{bannerDec},
banner_status = #{bannerStatus},
where banner_id = #{bannerId}
相当于if(){}else{}if(){}
循环数组或集合,动态生成sql;多数用在批量删除和添加
delete from banner where id in
#{id}
insert into banner values
(null,#{bannerDec}, #{bannerStatus})
sql标签用来声明sql片段、include标签用来将声明的sql片段包含到某个sql语句当中
作用:代码复用、易维护。
①:级联属性映射、
②:association(关联)---修改resultMap中的配置:association即可。
③:分布查询(用的多) ----可以实现延迟加载
一对多的实现,通常是在一的一方中有List集合属性。
①:collection
②:分布查询----可以实现延迟加载
延迟加载:需要在association标签中添加fetchType="lazy"
全局延迟加载:开启全局延迟加载之后,所有的sql都会支持延迟加载。
不想全局加载,需要单独配置fetchType="eager",针对某个特定的sql,就关闭了延迟加载机制。
通过减少IO的方式,来提高程序的执行效率。
将select语句的查询结果放到缓存(内存)当中,下一次还是这条select语句的话,直接从缓存中取,不再查数据库。一方面是减少了IO。另一方面不再执行繁琐的查找算法。效率大大提升。
①一级缓存:将查询到的数据存储到SqlSession中。
一级缓存默认是开启的。不需要做任何配置。
原理:只要使用同一个SqlSession对象执行同一条SQL语句,就会走缓存。
②二级缓存:将查询到的数据存储到SqlSessionFactory中。
二级缓存的范围是SqlSessionFactory。
使用二级缓存需要具备以下几个条件:
全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。默认就是true,无需设置。
在需要使用二级缓存的SqlMapper.xml文件中添加配置:
使用二级缓存的实体类对象必须是可序列化的,也就是必须实现java.io.Serializable接口。
SqlSession对象关闭或提交后,一级缓存中的数据才会被写入到二级缓存中,二级缓存才可用。
①不同的SqlSession对象。
第一次查询和第二次查询之间,手动清空了一级缓存。
②:查询条件变化了。
第一次查询和第二次查询之间,执行了增删改操作。
这个增删改和哪张表没有关系,只要有insert delete update操作,一级缓存就失效。
缓存只针对于DQL语句,也就是说缓存机制只对应select语句。
二级缓存的失效:只要两次查询之间出现了增删改操作。二级缓存就会失效。一级缓存也会失效。
com.github.pagehelper
pagehelper
5.3.0