mybatis-plus 自定义UpdateWrapper(二)实现列的case set
前言
小编在crud业务中会遇到case set的场景,
update `TD_XXX`
set
`status` = case `id` when 12 Then 1 when 13 Then 2 when 14 Then 1
end
where `id` in (12,13,14)
一般来说都是写在xml中,但是其实mybatis-plus也可以
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.1</version></dependency>
源码分析
此部分跳过,在mybatis-plus 自定义UpdateWrapper(一)实现列自增 已经有详细描述了
思路
此时应该将sql分开看得清楚些
SET `columns` = (CASE `caseColumns` WHEN caseMap.keys[0] THEN caseMap.values[0]END)
代码实现
/*** 根据传入map case update 最终实现如下效果* <p>* SET `columns` = (* CASE `caseColumns` WHEN caseMap.keys[0] THEN caseMap.values[0]* WHEN caseMap.keys[1] THEN caseMap.values[1]* WHEN caseMap.keys[2] THEN caseMap.values[2]* END)* </p>*/public MyLambdaUpdateWrapper<T> caseSet(SFunction<T, ?> columns, Map<Object,Object> caseMap, SFunction<T, ?> caseColumns) {String columnsToString = super.columnToString(columns);List<Object> params = new ArrayList<>();StringBuilder stringBuilder = new StringBuilder();int paramIndex = 0;for (Object o : caseMap.keySet()) {stringBuilder.append(String.format("WHEN {%d} THEN {%d}", paramIndex++, paramIndex++)).append("\n");params.add(o);params.add(caseMap.get(o));}String caseSqlFormat = String.format("(case %s %s end)", super.columnToString(caseColumns), stringBuilder.toString());String format = String.format("%s = %s", columnsToString, formatSql(caseSqlFormat, params.toArray(new Object[0])));setSql(format);return this;}
mybatis-plus 自定义UpdateWrapper(二)实现列的case set相关推荐
- 学习Spring Boot:(十二)Mybatis 中自定义枚举转换器
前言 在 Spring Boot 中使用 Mybatis 中遇到了字段为枚举类型,数据库存储的是枚举的值,发现它不能自动装载. 解决 内置枚举转换器 MyBatis内置了两个枚举转换器分别是:org. ...
- (转)MyBatis框架的学习(二)——MyBatis架构与入门
http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: ...
- springboot+mybatis集成自定义缓存ehcache用法笔记
今天小编给大家整理了springboot+mybatis集成自定义缓存ehcache用法笔记,希望对大家能有所办帮助! 一.ehcache介绍 EhCache 是一个纯Java的进程内缓存管理框架,属 ...
- [mybatis]select_resultMap_自定义结果集映射规则
resultMap 自定义某个javaBean的封装规则 type:自定义规则的Java类型 id:唯一id方便引用 指定主键列的封装规则 id:定义主键底层会有优化 column:指定哪一列 pro ...
- mybatis源码阅读(二):mybatis初始化上
转载自 mybatis源码阅读(二):mybatis初始化上 1.初始化入口 //Mybatis 通过SqlSessionFactory获取SqlSession, 然后才能通过SqlSession与 ...
- oracle typehandler,Mybatis实现自定义的类型转换器TypeHandler
此文其实是java操作Oracle类型XMLType总结二:使用Mybatis附带的一篇小结. Mybatis实现自定义的转换器,十分的简单,其主要步骤分为三步,这里以操作XMLType类型为例. 第 ...
- mybatis generator自定义逆向工程防覆盖sql代码
Mybatis generator 自定义逆向工程防覆盖sql 在项目中常常有数据库的变更,我们会常用到mybats generator逆向工程来为我们更新项目中的sql语句及entity实体,此时会 ...
- python使用matplotlib可视化subplots绘制子图、自定义几行几列子图,如果M行N列,那么最终包含M*N个子图、在指定的子图中添加可视化结果
python使用matplotlib可视化subplots绘制子图.自定义几行几列子图,如果M行N列,那么最终包含M*N个子图.在指定的子图中添加可视化结果 目录
- pandas自定义设置dataframe每个索引的标签、自定义设置索引的列名称(customize index name and index label)
pandas自定义设置dataframe每个索引的标签.自定义设置索引的列名称(customize index name and index label) 目录
- mybatis 思维导图,让 mybatis 不再难懂(二)
上一篇文章写了mybatis的基本原理和配置文件的基本使用,这一篇写mybatis的使用,主要包括与sping集成.动态sql.还有mapper的xml文件一下复杂配置等.值得注意的是,导图17和18 ...
最新文章
- python科学计算基础教程pdf下载-用Python做科学计算 高清晰PDF
- 图像特征提取:图像的矩特征
- Linux环境下静态库的生成和使用 (.a文件)
- add-apt-repository:找不到命令_嵌入式开发之交叉编译程序万能命令_以freetype为例...
- 《JavaScript 高级程序设计》笔记 第7章及以后
- JavaScript获取当前月的第一天和最后一天日期
- 好用的HTML文本编辑器BBEdit for Mac
- AOJ-759 会绕圈的数
- consul服务发现与注册于配置 (mac版为例)
- jquery on() 转
- Centos 7.0 的svn
- 会议管理系统java_javaweb会议管理系统
- 杭州滨江不久将不复存在,新杭州主城8区规划调整出炉!
- el-table使用span-method合并行
- 工业设备软件的研发测试
- 学习型通用红外遥控设备(一)
- 用命令备份与还原网络设置
- TResNet学习笔记 --- TResNet: High Performance GPU-Dedicated Architecture
- 帆软大屏背景怎么设置_FineReport报表工具增加动态背景色
- 人类活动识别---数据集UCI-HAR简介
热门文章
- 怎么批量调色_100款一键批量商业影楼修图调色PS动作,让你成为P图高手!!
- PySpark: DataProcessing(csv file)
- Google Cloud 虚拟机 Virtual Machines
- 容器技术Docker K8s 53 边缘容器服务(ACK@Edge)-阿里云边缘容器服务
- AWS DeepRacer ROS 架构 模拟环境和真实赛道的区别
- 机器学习- 吴恩达Andrew Ng Week8 知识总结 Dimensionality Reduction
- linux部署was找不到8879端口,WAS8.0与IHS集群安装与配置指导手册
- 会话推荐和 序列推荐
- python安装graphviz和pydotplus
- 使用winedt写论文遇到的一些小问题