mybatis的一种批量更新方法我
Posted 戈博小刀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis的一种批量更新方法我相关的知识,希望对你有一定的参考价值。
接手一个项目,项目主要架构用的 servlet 3.0 + spring + mybatis
其中发现一个问题:
操作数据时,批量插入可以,批量更新,使用各种写法都无法成功,直接报 mybatis转换异常等等,最后解决方法是所有批量更新都用如下写法:
userXML.xml文件
userXML.xml文件 <!-- 更新user表 --> <insert id="updateUser" parameterType="java.util.List"> INSERT INTO USER ( ID, USER_NAME, PASSWORD, UP_DATE, STATUS ) VALUES <foreach collection="list" item="item" index="index" separator="," > ( #{item.id}, //主键(用这种方法必须要有主键) #{item.userName}, <choose> <when test="item.innerPartyId != null and item.innerPartyId != ‘‘"> #{item.password}, </when> <otherwise> null, </otherwise> </choose> NOW(), //当前时间 ${2} //纯数字 ) </foreach > ON DUPLICATE KEY UPDATE //主键id存在就是插入,不存在就是更新 ID=VALUES(ID), USER_NAME=VALUES(USER_NAME), PASSWORD=VALUES(PASSWORD), UP_DATE=VALUES(UP_DATE), STATUS=VALUES(STATUS) </insert>
java代码:
baseDao:
protected int insert(Object routeObject, String statement, Object parameter) { return this.sqlSessionDaoSupport.getSqlSession().insert(routeObject, statement, parameter); }
测试代码:
List<Object> paramList = new ArrayList<>(); User u1 = new User(); User u2 = new User(); paramList.add(u1); paramList.add(u2); this.insert("userXML", "userXML.updateUser", paramList);
第一个参数:xml文件名称,
第二个参数:文件中的方法名,
第三个参数:参数list
以上是关于mybatis的一种批量更新方法我的主要内容,如果未能解决你的问题,请参考以下文章
spring+mybatis一个方法执行多条更新语句,实现批量DML
javamybatis在使用mybatis进行批量插入,批量更新等批量操作时,切割In集合List进行分批批量操作的java中的切割代码