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

  • 相关阅读:
    ROS 八叉树地图构建
    2020
    Ubuntu 16.04 配置开机自动挂载 NTFS 机械硬盘!
    从 0 开始机器学习
    Ubuntu Install kitti2bag
    Ubuntu install sublime-text3
    Ubuntu 修复不能访问正确挂载机械硬盘的问题
    Ubuntu 16.04 安装 NVIDIA 显卡驱动!
    ROS 机器人技术
    phpMyAdmin getshell 学习
  • 原文地址:https://www.cnblogs.com/libin6505/p/10751552.html
Copyright © 2011-2022 走看看