当时明月plus

结论

一、使用${},获取内容值,需要自己做类型转换;
使用#{},获取内容值,不需要做类型转换。mybatis自动实现了转换.

如iservice中方法传参数(String uuid),uuid的类型为string,值为abcdefg执行sql.

若xml中写的是#{uuid},则执行语句为select * from table where uuid='abcdefg'

若xml中写的是${uuid},则执行语句为select * from table where uuid=abcdefg
二、使用union all的时候尽量避免使用同名(从性能上讲,尽量避免使用union all)
在平常写sql的时候,需要用到同一个传参的时候尽量避免再获取一次–写在最后的where条件中即可

由于 UNION ALL 必须将多个 SELECT 语句的结果集组合在一起,因此当您尝试组合多个大型结果集时,可能会产生性能问题。如果您需要处理大量数据,请考虑在应用程序层面上实现 UNION ALL 操作,而不是在数据库层面上进行操作。
总之,UNION ALL 在 MySQL 中很灵活,但在使用它时需要注意数据类型、列数和性能等因素

问题

有趣的现象
idea中控制台打印的sql语句传参以的形式出现,然后填充param,无论是不是第一次填充都是按照名称去对应的。但是mybatis log中有时候填充为error。是因为啥?因为看控制台参数打印出来,都传过去了,但是同样的执行语句mybatis log填充为error

引申

添加链接描述
在mysql中
select concat(char(39),1,char(39)) – A 与单引号 拼接

注意:1、2可以执行,3不被允许
1 select concat(‘B’,char(34)) – B 与双引号 拼接
2 select concat(char(39),1,char(39)) – A 与单引号 拼接
3 select concat(char(39),ac,char(39)) – A 与单引号 拼接
可以看出基本数据类型是可以的

select concat(‘B’,char(34)) – B 与双引号 拼接 select concat(‘C’,char(10))
– C 与换行键 拼接 select concat(‘D’,char(13)) – D 与回车键 拼接

积累

MySQL语句:去掉NAME两边的双引号

TRIM(BOTH '"' FROM NAME)
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐