zoukankan      html  css  js  c++  java
  • Mybatis批量插入,批量更新

    批量插入

    • xml如下:
    <insert id ="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
            insert into t_person(name, age, height, weight, update_date) values
            <foreach collection="list" item="item" index="index" separator="," >
                (
                #{item.name},
                #{item.age},
                #{item.height},
                #{item.weight},
                now()
                )
            </foreach>
        </insert >
    

    useGeneratedKeys="true"表示自动产生主键id,而keyProperty="id"表示主键对应的对象属性为id。

    而且主键对应的这个Person对象的属性"id" (也可以是别的命名,比如personId之类的), 最好设置成String类型的,不然可能会出错。

    • Mapper如下:
    void batchInsert(List<Person> personList);
    

    这里不使用 @Param注解,那么在xml文件中的collection就默认为 "list"。

    • Service如下:
    public void batchInsert(List<Person> personList) {
            if (CollectionUtils.isNotEmpty(personList)) {
              personMapper.batchInsert(personList);
            }
        }
    

    在批量插入前,需要先做判空处理。

    批量更新

    • xml如下:
    <update id="batchUpdate" parameterType="java.util.List" >
    	<foreach collection="list" item="item" index="index" open="" close="" separator=";">
    		update t_person
    		<set >
    			<if test="item.name != null" >
    				fbq_code = #{item.name,jdbcType=VARCHAR},
    			</if>
    			<if test="item.age != null" >
    				dept_code = #{item.age,jdbcType=VARCHAR},
    			</if>
    			<if test="item.height != null" >
    				emp_id = #{item.height,jdbcType=VARCHAR},
    			</if>
    			<if test="item.weight != null" >
    				update_user = #{item.weight,jdbcType=VARCHAR },
    			</if>
    			update_date = now()
    		</set>
    		where id = #{item.id,jdbcType=INTEGER}
    	</foreach>
    </update>
    
    • Mapper如下:
    void batchUpdate(List<Person> personList);
    
    • Service如下:
    public void batchUpdate(List<Person> personList) {
            if (CollectionUtils.isNotEmpty(personList)) {
              personMapper.batchInsert(personList);
            }
        }
    
  • 相关阅读:
    基于python内置方法进行代码混淆
    python-__getattr__ 和 __getattribute__
    python-flask学习
    python-创建进程的三种方式
    python-property、__get__、__set__
    call apply bind
    【算法】js实现最短时间走完不同速度的路程
    图片懒加载实现
    MoonLight可视化订单需求区域分析系统前端
    前端代码基本命名规范和格式规范
  • 原文地址:https://www.cnblogs.com/expiator/p/14417061.html
Copyright © 2011-2022 走看看