mysql批量用trim限定_mybatis中批量更新sql语句,trim、foreach标签,varchar定义理解
准备工作
现在有一张表为: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定义理解相关推荐
- 如何找出MySQL数据库中的低效SQL语句
面对业务的迅猛发展,DBA的一项重要工作就是及时发现数据库中的低效SQL语句,有的可以立刻着手解决(比如缺少合适的索引),有的需要尽快反馈给开发人员进行修改. MySQL数据库有几个配置选项可以帮助我 ...
- MYSQL中常用的SQL语句(增删改查)
MYSQL中常用的SQL语句 一.增删改查 1.新增 指定字段插入: INSERT INTO <表名> (<字段1>, <字段2>, <字段3>) VA ...
- mysql 如何优化sql语句,如何优化SQL?MySQL中超实用的SQL语句送给大家
如何优化SQL?MySQL中超实用的SQL语句送给大家 如何优化SQL?MySQL中超实用的SQL语句送给大家 在写SQL时,经常灵活运用一些SQL语句编写的技巧,可以大大简化程序逻辑.减少程序与数据 ...
- thinkphp mysql 预处理_thinkPHP框架中执行原生SQL语句的方法
本文实例讲述了thinkPHP框架中执行原生SQL语句的方法.分享给大家供大家参考,具体如下: 怎样在thinkphp里面执行原生的sql语句? $Model = new Model();//或者 $ ...
- 更新sql语句 sql注入_SQL更新语句– SQL中的更新查询
更新sql语句 sql注入 SQL Update Statement or Update Query in SQL is used to modify the column data in table ...
- oracle中执行动态sql语句吗,oracle中有没有可动态执行sql语句的函数
oracle中有没有可动态执行sql语句的函数 关注:233 答案:2 手机版 解决时间 2021-03-05 15:53 提问者祗剩寂寞 2021-03-04 22:38 oracle中有没有可 ...
- ef执行原生sql语句_EF Core中执行原生SQL语句
一.课程介绍之所以今天录制这个系列文章的主要原因是,想在快速帮助到大家上手在ASP.NET Core WebAPI中结合EF Core来操作我们的数据库.EF Core的基础文章和基础课程实在是太多了 ...
- mybatis中mapper文件中的动态sql语句
有时候在检索时,用户提供的数据不一样多,我们很难使用静态的sql语句进行判别,所以这个时候需要使用动态的sql语句 这里主要针对Mapper.xml文件中的sql语句,笔者在下面所有的例子中只提供了M ...
- 执行计划 分析一条sql语句的效率 mysql_MySQL中一条SQL语句的执行过程
MySQL中一条SQL语句的执行过程 发布时间:2018-11-24 18:35, 浏览次数:390 , 标签: MySQL SQL 查询语句的执行顺序: 1.客户端通过TCP连接发送连接请求到mys ...
最新文章
- 【PAT (Basic Level) 】1025 反转链表 (25 分)
- 【技术综述】图像与CNN发家简史,集齐深度学习三巨头
- 2020年大学生电子设计竞赛,B题,单相在线式不间断电源,详细技术方案!
- python简单爬虫(一)
- SQL Server 视图设计器
- ExcelPackage 读取、导出excel
- 用python写1加到100怎么写_python计算1到100的和
- 互联网技术人应该如何与上级沟通?
- 哪些知乎收藏夹关注数超过一万?
- [Python核心技术与实战学习] 18 单元测试unittest 库
- Linux内核安装后reboot选择,Linux内核配置选项 参考(3)
- 无人驾驶算法学习(七):基于事件的视觉里程计
- npm WARN deprecated socks@1.1.10: If using 2.x branch, please upgrade to at leas t 2.1.6 to avoid a
- ES20-JAVA API 词项搜索
- 2022-2027年中国步进电机制造行业发展监测及投资战略研究报告
- Web网站测试流程和方法
- 找出viewgood webplayer播放的电影地址!---在线播放 和 下载
- 中标麒麟OS连接win10上的SMB共享
- 我讨厌慢节奏工作,我喜欢充实生活
- python无法import pyzbar(No module named ‘pyzbar‘)