准备工作

现在有一张表为:student,相关字段如下:

mapper层方法

int batchUpdateStudent(List studentList);

xml语句

update student

when aid = #{item.aid} then #{item.name}

when aid = #{item.aid} then #{item.email}

WHERE

aid = #{item.aid}

运行结果,未被匹配到的记录并不会保持原来的数值,而是会被设置为null,因此一定要添加where条件。

update student

set name =case

when aid = 1 then ''

when aid = 2 then ''

end,

email =case

when aid = 1 then ''

when aid = 2 then ''

end

where (aid = 1) or (aid = 2)

动态sql标签详解

trim标签

相关属性

具体描述

prefix

给sql语句拼接的前缀

suffix

给sql语句拼接的后缀

prefixOverrides

去除sql语句前面的关键字或者字符,该关键字或者字符由prefixOverrides属性指定,假设该属性指定为"and",当sql语句的开头为"and",trim标签将会去除该"and"

suffixOverrides

去除sql语句后面的关键字或者字符,该关键字或者字符由suffixOverrides属性指定

Foreach标签

相关属性

具体描述

collection

遍历的集合名称;

item

每个元素进行迭代时的别名;

index

在迭代过程中,每次迭代到的位置;

open

以什么开始;

close

以什么结束;

separator

每次进行迭代之间以什么符号作为分隔符。

collection属性详细说明:

传入"单个参数"并且参数类型为List,collection属性值为list,如上图例子;

传入"单个参数"并且参数类型为array数组,collection的属性值为array;

传入"多个参数",将其封装为map,collection的属性值为map中的key值。

List lists = new ArrayList<>();

......

Map map = new HashMap();

params.put("studentList", list);

params.put("uuid", "hgjahgkjasgj");

#{item}

varchar(20)中的20代表字符还是字节

mysql数据库

5.X 以上的版本的定义中表示的字符长度,例如varchar(10,可以添加10个英文字符或者10个数字或者10个中文字符。

4.X 的版本表示的是字节长度,会根据字符集转变内容字节长度存储。

-- 获取到字节长度

SELECT LENGTH('中国');

-- 获取到字符长度

SELECT CHAR_LENGTH('中国');

oracle数据库

oracle中建立表时,varchar2类型的字段长度单位默认使用byte类型定义,也可以使用字符为单位来定义长度,例如:varchar2(20 char)

函数:lengthb(string)计算string所占的字节长度,length(string)计算string所占的字符长度

--获取到字节长度

selec lengthb('中国') from dual;

--获取到字符长度

selec length('中国') from dual;

注意事项

如果存在mysql数据库的数据迁移到oracle中数据库中的相关表时,在oracle中创建表时,注意oracle表中的varchar2类型长度单位默认使用byte类型

--mysql:代表的是20个字符,也就是说,可以存在20个汉字的情况

nameVARCHAR(20)

--oracle:代表的是20个字节,假设此oracle中一个汉字可能对应2个字节,20个汉字对应的则是40字节,迁移时会报长度不够的错误

nameVARCHAR2(20)

-- 可以使用,表示20个字符

nameVARCHAR2(20 char)

oracle建表时,如果不知道具体的长度,可以在mysql中使用LENGTH()、MAX()函数,找到该字段的最大字节数;在oracle中确定该字段的长度时,比查出来的最大长度大就不会报字段超长(value too large)的错误了。

欢迎关注

公众号三筒记简介:分享各种编程知识、excel相关技巧、读书笔记

mysql批量用trim限定_mybatis中批量更新sql语句,trim、foreach标签,varchar定义理解相关推荐

  1. 如何找出MySQL数据库中的低效SQL语句

    面对业务的迅猛发展,DBA的一项重要工作就是及时发现数据库中的低效SQL语句,有的可以立刻着手解决(比如缺少合适的索引),有的需要尽快反馈给开发人员进行修改. MySQL数据库有几个配置选项可以帮助我 ...

  2. ​MYSQL中常用的SQL语句​(增删改查)

    MYSQL中常用的SQL语句 一.增删改查 1.新增 指定字段插入: INSERT INTO <表名> (<字段1>, <字段2>, <字段3>) VA ...

  3. mysql 如何优化sql语句,如何优化SQL?MySQL中超实用的SQL语句送给大家

    如何优化SQL?MySQL中超实用的SQL语句送给大家 如何优化SQL?MySQL中超实用的SQL语句送给大家 在写SQL时,经常灵活运用一些SQL语句编写的技巧,可以大大简化程序逻辑.减少程序与数据 ...

  4. thinkphp mysql 预处理_thinkPHP框架中执行原生SQL语句的方法

    本文实例讲述了thinkPHP框架中执行原生SQL语句的方法.分享给大家供大家参考,具体如下: 怎样在thinkphp里面执行原生的sql语句? $Model = new Model();//或者 $ ...

  5. 更新sql语句 sql注入_SQL更新语句– SQL中的更新查询

    更新sql语句 sql注入 SQL Update Statement or Update Query in SQL is used to modify the column data in table ...

  6. oracle中执行动态sql语句吗,oracle中有没有可动态执行sql语句的函数

    oracle中有没有可动态执行sql语句的函数 关注:233  答案:2  手机版 解决时间 2021-03-05 15:53 提问者祗剩寂寞 2021-03-04 22:38 oracle中有没有可 ...

  7. ef执行原生sql语句_EF Core中执行原生SQL语句

    一.课程介绍之所以今天录制这个系列文章的主要原因是,想在快速帮助到大家上手在ASP.NET Core WebAPI中结合EF Core来操作我们的数据库.EF Core的基础文章和基础课程实在是太多了 ...

  8. mybatis中mapper文件中的动态sql语句

    有时候在检索时,用户提供的数据不一样多,我们很难使用静态的sql语句进行判别,所以这个时候需要使用动态的sql语句 这里主要针对Mapper.xml文件中的sql语句,笔者在下面所有的例子中只提供了M ...

  9. 执行计划 分析一条sql语句的效率 mysql_MySQL中一条SQL语句的执行过程

    MySQL中一条SQL语句的执行过程 发布时间:2018-11-24 18:35, 浏览次数:390 , 标签: MySQL SQL 查询语句的执行顺序: 1.客户端通过TCP连接发送连接请求到mys ...

最新文章

  1. 【PAT (Basic Level) 】1025 反转链表 (25 分)
  2. 【技术综述】图像与CNN发家简史,集齐深度学习三巨头
  3. 2020年大学生电子设计竞赛,B题,单相在线式不间断电源,详细技术方案!
  4. python简单爬虫(一)
  5. SQL Server 视图设计器
  6. ExcelPackage 读取、导出excel
  7. 用python写1加到100怎么写_python计算1到100的和
  8. 互联网技术人应该如何与上级沟通?
  9. 哪些知乎收藏夹关注数超过一万?
  10. [Python核心技术与实战学习] 18 单元测试unittest 库
  11. Linux内核安装后reboot选择,Linux内核配置选项 参考(3)
  12. 无人驾驶算法学习(七):基于事件的视觉里程计
  13. npm WARN deprecated socks@1.1.10: If using 2.x branch, please upgrade to at leas t 2.1.6 to avoid a
  14. ES20-JAVA API 词项搜索
  15. 2022-2027年中国步进电机制造行业发展监测及投资战略研究报告
  16. Web网站测试流程和方法
  17. 找出viewgood webplayer播放的电影地址!---在线播放 和 下载
  18. 中标麒麟OS连接win10上的SMB共享
  19. 我讨厌慢节奏工作,我喜欢充实生活
  20. python无法import pyzbar(No module named ‘pyzbar‘)

热门文章

  1. Loadrunner11完美破解小笔记
  2. java 中的this
  3. android WebView总 结
  4. phoneGap技术分析
  5. 格式化字符串长度 超出指定长度用....代替
  6. AjaxPro使用说明
  7. 如何玩转sortablejs-vuedraggable实现表单嵌套拖拽功能
  8. 嵌入式相关的硬件平台
  9. 人脸检测与对齐之MTCNN网络
  10. 7-183 阅览室 (20 分)