码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis的一种批量更新方法【我】

时间:2019-04-22 18:00:33      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:span   直接   aos   转换   操作   mybatis   sep   upd   util   

 

接手一个项目,项目主要架构用的 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的一种批量更新方法【我】

标签:span   直接   aos   转换   操作   mybatis   sep   upd   util   

原文地址:https://www.cnblogs.com/libin6505/p/10751552.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!