- 特殊符号转义
- 1、批量更新
- 2、#和$在foreach的使用
- 3、没有查询结果
- 4、resultType和resultMap
- 5、项目部署
- 6、添加测试用例
特殊符号转义
1、批量更新
不建议的几种做法:
1、foreach放在外层,就是执行多次update,多次打开数据库
2、case when操作,这个看起来跟上面放出来的sql差不多,都是只执行一次sql就达到了批量更新的目的,但是经测试,效率太慢,或许是我不会用
Mybatis批量更新配置(Mysql batch update)
2、#和$在foreach的使用
以上是正确mybatis语句,功能是批量更新ctcc表中的credit字段等于1,当md5在foreach循环中的list值这个范围内。
关键点在于
好多人说foreach中应该用$而不是#号,解释是$的参数直接输出,#的参数会被替换为?,然后传入参数值执行。
但这里我使用美元符号后却报错:
Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Illegal double ‘002344e1860’ value found during parsing
; SQL []; Data truncation: Illegal double ‘002344e1860’ value found during parsing; nested exception is com.mysql.jdbc.MysqlDataTruncation: Data truncation: Illegal double ‘002344e1860’ value found during parsing
基于mysql对mybatis中的foreach进行深入研究
3、没有查询结果
核心就是IFNULL函数的使用,如果查询不到结果就为-1,或者其他指定的值。
使用MyBatis查询 返回类型为int,但是当查询结果为空NULL,报异常的解决方法
4、resultType和resultMap
正常情况下我会使用resultType,包括select insert update等语句,因为不管返回的是什么,比如返回一个int值,那么resultType=’int’,如果返回一个集合,那么resultType=’com.xm.po.AoPo’,注意这里需要使用到包名,也可以不加这个属性。
而resulttype的使用情况,个人认为是在查询返回的结果中没有与之相应的实体类,所以需要手动构造一个map来装载查询到的结果,类似这样
mybatis中resultType和resultMap使用时的区别
5、项目部署
将项目打成war包并用tomcat部署的方法,步骤及注意点 Unsupported major.minor version 52.0解决办法 [tomcat7源码学习]初始化之catalina.home和catalina.base(转) Tomcat For Linux 的安装与配置详解 实时查看linux下tomcat运行日志
6、添加测试用例