IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> mybatis动态更新及批量动态插入 -> 正文阅读

[开发工具]mybatis动态更新及批量动态插入

动态更新

<update id="updateElevator" parameterType="com.diantijiang.saas.data.elevator.Elevator" >
    update dc_elevator
    <set>
      <if test="inspectionCode != null">inspection_code = #{inspectionCode,jdbcType=VARCHAR},</if>
      <if test="brandCode!=null">brand_code = #{brandCode},</if>
      <if test="modelSpecs!=null">model_specs = #{modelSpecs},</if>
      <if test="elevatorType!=null">elevator_type=#{elevatorType},</if>
      <if test="idDistrict!=null">id_district=#{idDistrict},</if>
      <if test="idPropertyCompany!=null">id_property_company=#{idPropertyCompany},</if>
      <if test="idServiceCompany!=null">id_service_company=#{idServiceCompany},</if>
      <if test="idServiceManager!=null">id_service_manager=#{idServiceManager},</if>
      <if test="contractCode!=null">contract_code=#{contractCode},</if>
      <if test="runStatus!=null">run_status=#{runStatus},</if>
      <if test="qrCodeCheck!=null">qr_code_check=#{qrCodeCheck},</if>
      <if test="qrCodeProduct!=null">qr_code_product=#{qrCodeProduct},</if>
      <if test="lastAnnualDate!=null">last_annual_date=#{lastAnnualDate},</if>
      <if test="nextAnnualDate!=null">next_annual_date=#{nextAnnualDate},</if>
      <if test="lastMaintainDate!=null">last_maintain_date=#{lastMaintainDate},</if>
      <if test="nextMaintainDate!=null">next_maintain_date=#{nextMaintainDate},</if>
      <if test="repairTimes!=null">repair_times=#{repairTimes},</if>
      <if test="maintainTimes!=null">maintain_times=#{maintainTimes},</if>
      <if test="accessoriesExchanges!=null">accessories_exchanges=#{accessoriesExchanges},</if>
      <if test="installDate!=null">Install_date=#{installDate},</if>
      <if test="status!=null">status=#{status},</if>
      <if test="createdBy!=null">created_by=#{createdBy},</if>
      <if test="createdDate!=null">created_date=#{createdDate},</if>
      <if test="updatedBy!=null">updated_by=#{updatedBy},</if>
      <if test="updatedDate!=null">updated_date=#{updatedDate}</if>
    </set>
    where
      id_elevator = #{idElevator}
  </update>

批量动态插入

说明:当前方式在插入一条时正常,插入多条时会出现拼接错误!如果需要多条插入请参照修订方法!

<insert id="batchInsert" parameterType="java.util.List" >
    insert into dc_elevator
    (
    <foreach collection="list" separator="," item="item" index="index">
        <if test="item.inspectionCode != null">inspection_code,</if>
        <if test="item.brandCode!=null">brand_code,</if>
        <if test="item.modelSpecs!=null">model_specs,</if>
        <if test="item.elevatorType!=null">elevator_type,</if>
        <if test="item.idDistrict!=null">id_district,</if>
        <if test="item.idPropertyCompany!=null">id_property_company,</if>
        <if test="item.idServiceCompany!=null">id_service_company,</if>
        <if test="item.idServiceManager!=null">id_service_manager,</if>
        <if test="item.contractCode!=null">contract_code,</if>
        <if test="item.runStatus!=null">run_status,</if>
        <if test="item.qrCodeCheck!=null">qr_code_check,</if>
        <if test="item.qrCodeProduct!=null">qr_code_product,</if>
        <if test="item.lastAnnualDate!=null">last_annual_date,</if>
        <if test="item.nextAnnualDate!=null">next_annual_date,</if>
        <if test="item.lastMaintainDate!=null">last_maintain_date,</if>
        <if test="item.nextMaintainDate!=null">next_maintain_date,</if>
        <if test="item.repairTimes!=null">repair_times,</if>
        <if test="item.maintainTimes!=null">maintain_times,</if>
        <if test="item.accessoriesExchanges!=null">accessories_exchanges,</if>
        <if test="item.installDate!=null">Install_date,</if>
        <if test="item.status!=null">status,</if>
        <if test="item.createdBy!=null">created_by,</if>
        <if test="item.createdDate!=null">created_date,</if>
        <if test="item.updatedBy!=null">updated_by,</if>
        <if test="item.updatedDate!=null">updated_date,</if>
        id_elevator
    </foreach>
    )
    values
      <foreach collection="list" index="index" item="item" separator=",">
        (
          <if test="item.inspectionCode != null">#{item.inspectionCode},</if>
          <if test="item.brandCode!=null">#{item.brandCode},</if>
          <if test="item.modelSpecs!=null">#{item.modelSpecs},</if>
          <if test="item.elevatorType!=null">#{item.elevatorType},</if>
          <if test="item.idDistrict!=null">#{item.idDistrict},</if>
          <if test="item.idPropertyCompany!=null">#{item.idPropertyCompany},</if>
          <if test="item.idServiceCompany!=null">#{item.idServiceCompany},</if>
          <if test="item.idServiceManager!=null">#{item.idServiceManager},</if>
          <if test="item.contractCode!=null">#{item.contractCode},</if>
          <if test="item.runStatus!=null">#{item.runStatus},</if>
          <if test="item.qrCodeCheck!=null">#{item.qrCodeCheck},</if>
          <if test="item.qrCodeProduct!=null">#{item.qrCodeProduct},</if>
          <if test="item.lastAnnualDate!=null">#{item.lastAnnualDate},</if>
          <if test="item.nextAnnualDate!=null">#{item.nextAnnualDate},</if>
          <if test="item.lastMaintainDate!=null">#{item.lastMaintainDate},</if>
          <if test="item.nextMaintainDate!=null">#{item.nextMaintainDate},</if>
          <if test="item.repairTimes!=null">#{item.repairTimes},</if>
          <if test="item.maintainTimes!=null">#{item.maintainTimes},</if>
          <if test="item.accessoriesExchanges!=null"> #{item.accessoriesExchanges},</if>
          <if test="item.installDate!=null">#{item.installDate},</if>
          <if test="item.status!=null">#{item.status},</if>
          <if test="item.createdBy!=null">#{item.createdBy},</if>
          <if test="item.createdDate!=null">#{item.createdDate},</if>
          <if test="item.updatedBy!=null">#{item.updatedBy},</if>
          <if test="item.updatedDate!=null">#{item.updatedDate},</if>
          #{item.idElevator}
        )
      </foreach>
  </insert>

修订方法

实体类

@Repository(value = "log")
public class Log {
    private String id;      //日志编号
    private String userid;  //用户名
    private String time;    //时间
    private String type;    //类型
    private String detail;  //详情
    private String ip;      //ip地址......

dao层

@Service(value = "logDao")
public interface ILogDao {

    //测试动态批量插入数据
    boolean batchInsert(
            @Param("key") Log log,
            @Param("value") List<Log> list
    );
}

mapper.xml

<!--测试批量插入(传入的参数不止一个,就不要指定参数类型)-->
    <insert id="batchInsert" >      --  parameterType="java.util.HashMap"
        INSERT INTO log(
            <if test="null != key.userid"> userid, </if>
            <if test="null != key.detail"> detail, </if>
            <if test="null != key.ip"> ip, </if>
            id
        )
        VALUES
        <foreach collection="value" index="index" item="item" separator=",">
            (
                <if test="null != item.userid">#{item.userid},</if>
                <if test="null != item.detail"> #{item.detail}, </if>
                <if test="null != item.ip"> #{item.ip}, </if>
                #{item.id}
            )
        </foreach>
    </insert>

工具类:计算对象非空属性的数量

package com.amayadream.webchat.utils;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Map;

/**
 * @Description: 对象属性工具
 * @CreateDate: 2020/8/2 4:59
 */
public class ObjectFieldUtil {

    //计算对象非空属性个数
    public static int calculateNotEmptyFieldsNum(Object object) {
        int num = 0;
        if (object != null) {
            Class<?> entity = object.getClass();
            Field[] fields = entity.getDeclaredFields();//获取该类的所有成员变量(私有的)
            for (Field field : fields) {
                try {
                    field.setAccessible(true);
                    if (field.get(object) != null && !"".equals(field.get(object))) {
                        num ++;
                        break;
                    }
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        }
        return num;
    }

}

动态插入-返回主键

<insert id="insertCardWithId" parameterType="com.diantijiang.saas.account.entity.BankCard">
  /*先插入,再将主键返回实体*/
  <selectKey resultType="java.lang.Long" order="AFTER" keyProperty="cardId">
    SELECT LAST_INSERT_ID()
  </selectKey>
  /*插入*/
  INSERT INTO ac_bank_card
    <trim prefix="(" suffix=")" suffixOverrides=",">
      bank_name,
      card_number,
      <if test="null != expiryDate and ''!= expiryDate">expiry_date,</if>
      ower,
      account_id
    </trim>
  VALUES
    <trim prefix="(" suffix=")" suffixOverrides=",">
      #{bankName},
      #{cardNumber},
      <if test="null != expiryDate and ''!=expiryDate">
        #{expiryDate},
      </if>
      #{ower},
      #{accountId}
    </trim>
</insert>
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:36:29  更:2022-05-12 16:37:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:39:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码