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

 

posted @ 2019-04-22 17:47  戈博折刀  阅读(330)  评论(0编辑  收藏  举报