Mybatis相关知识点总结

1.通过foreach标签实现批量删除

<foreach collection="ids" item="id" separator="," open="(" close=")" close="" index="">
      #{id}
</foreach>

说明:
collection:指定要遍历的集合或数组
item:别名
open:设置循环体的开始内容
close:设置循环体的结束内容
separator:每一次循环之间的分隔符
index:若遍历的是list集合,代表的是下表;若遍历的是map,代表的是键

2.批量操作(增删改查)
delete:(批量删除)
通过foreach循环来批量删除
select:(批量查询)
和delete相同
update:(批量修改)
1)把每条数据修改为相同内容
做状态修改时,可以通过后面的where条件设置(列如全部已读和全部未读操作)
操作同上
2)把每条数据修改为相对应内容
根据每条需要修改数据的id来进行修改;

<update id="updateMoreByArray">
    <foreach  collection="emps" item="emp">
          update emp set ename=#{emp.ename},age=#{emp.age}....... ;
    </foreach>  
</update>

注意:mysql本身不支持多条sql进行修改,如果需要多条sql修改需要在连接mysql数据库时加上
allowMultiQueries=true 属性;

insert:(批量添加)
dao层:
insertMoreByArray(@param(emps) Emp[ ] emps)
dao层实现类:

<insert  id = "insertMoreByArray">
     insert into emp values
     <foreach  collection="emps" item="emp" separator=",">
            (null,#{emp.name},#{emp.age},#{emp.sex},1) 
     </foreach>  
</insert>

3.sql标签(动态sql)

说明:用来设置一段sql片段,即公共sql,可以被当前映射文件的所有sql语句访问。

<sql  id ="empColumns">select eid,ename,age,sex,did from emp<sql>

<select>
     <include  refid="empColumns"></include>   //引用公共的sql
</select>

4.缓存
1)一级缓存
一级缓存默认开启,当执行相同的sql语句时,会直接从缓存中取,相同的sql语句不会被执行。
注意:一级缓存只针对相同的SqlSession,如果是不同SqlSession,相同的sql语句还是会被执行。
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession sqlSession = sqlSessionFactory.openSession(true); //自动提交事务

sqlSession.clearCache(); //清空缓存

2)二级缓存
二级缓存默认不开启
使用步骤:
①全局配置文件(mybatis-config.xml)中开启二级缓存
②需要使用二级缓存的映射文件(dao层实现类)处使用cache配置缓存
③注意:POJO需要实现Serializable接口
注意:二级缓存在 SqlSession 关闭或提交之后才会生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值