zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    VMwarePro密钥
    Windows事件ID
    python中安装下载超时,下载不了安装包
    PNG文件结构分析 ---Png解析
    世界协调时间(UTC)与中国标准时间
    计算机用户权限比较
    pikachu-xx型注入
    pikachu-搜索型注入 #手工注入
    显示桌面图标
    SQL2005 数据库还原到 SQL2008 错误 3145 解决办法
  • 原文地址:https://www.cnblogs.com/libin6505/p/10751552.html
Copyright © 2011-2022 走看看