您当前的位置: 首页 >  mybatis

梁云亮

暂无认证

  • 2浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

MyBatis批量更新

梁云亮 发布时间:2021-04-04 13:01:01 ,浏览量:2

MySQL when-case语句

语法:

CASE 
WHEN  THEN 
WHEN  THEN 
…
[ELSE ]
END CASE ;
  • 示例:
UPDATE categories SET
    level = CASE id
        WHEN 1 THEN 3
        WHEN 2 THEN 4
        WHEN 3 THEN 5
    END
WHERE id IN (1,2,3)

上面代码中的where语句的作用:

  1. 提高sql执行的效率
  2. 不加的话会设计其它记录的level字段的值为null,需要注意
  • 示例:
UPDATE categories SET
    level= CASE id
        WHEN 1 THEN 3
        WHEN 2 THEN 4
        WHEN 3 THEN 5
    END,
    title = CASE id
        WHEN 1 THEN 'Java'
        WHEN 2 THEN 'Python'
        WHEN 3 THEN 'C#'
    END
WHERE id IN (1,2,3)
MyBatis批量更新
  • Mapper文件
int updateDeptLocs(@Param("depts")List DeptList);
  • 对应的映射文件:

    UPDATE tb_category SET level =
    
        when deptno = #{item.deptno} then #{item.loc}
    
    WHERE deptno IN
    
        #{item.deptno,jdbcType=INTEGER}
    

  • 测试代码:
@Test
void updateDeptLocs(){
    List list =new ArrayList();
    list.add(new Dept(10,"Research", "北京"));
    list.add(new Dept(10,"Sales", "南京"));
    int res = deptMapper.updateDeptLocs(list);
    System.out.println(res);
}
  • 生成的SQL:
UPDATE tb_category SET LEVEL =
CASE
		WHEN id =10 THEN '北京' 
		WHEN id = 30 THEN '东市' 
	END 
WHERE id IN (10, 30);
关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0444s