数据库表对比 没有的数据批量插入

 源数据表

CREATE TABLE `bus_print_field` (
  `id` varchar(64) NOT NULL,
  `name` varchar(255) NOT NULL COMMENT '字段名称',
  `type` tinyint(2) NOT NULL COMMENT '字段类型 0头部 1顶部 2表格 3底部',
  `sort` int(11) DEFAULT '1' COMMENT '排序',
  `is_bold` tinyint(2) DEFAULT '0' COMMENT '是否加粗 1是 0否 默认0',
  `is_show` tinyint(2) DEFAULT '1' COMMENT '是否显示 1是 0否 默认1',
  `is_sort` tinyint(2) DEFAULT '1' COMMENT '是否支持排序 1是 0否 默认1',
  `font_size` int(11) DEFAULT '14' COMMENT '字号(单位px)',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `version` int(11) DEFAULT NULL COMMENT '版本',
  `remarks` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` tinyint(2) DEFAULT '0' COMMENT '删除标志 0正常1删除',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='打印字段表';

 各公司自己的字段配置表

CREATE TABLE `bus_print_field_setting` (
  `id` varchar(64) NOT NULL,
  `company_id` varchar(64) NOT NULL COMMENT '公司id',
  `bus_print_field_id` varchar(64) NOT NULL COMMENT '字段源ID',
  `name` varchar(255) NOT NULL COMMENT '字段名称',
  `type` tinyint(2) NOT NULL COMMENT '字段类型 1顶部 2表格 3底部',
  `sort` int(11) DEFAULT '1' COMMENT '排序',
  `is_bold` tinyint(2) DEFAULT '0' COMMENT '是否加粗 1是 0否 默认0',
  `is_show` tinyint(2) DEFAULT '1' COMMENT '是否显示 1是 0否 默认1',
  `is_sort` tinyint(2) DEFAULT '1' COMMENT '是否支持排序 1是 0否 默认1',
  `font_size` int(11) DEFAULT '14' COMMENT '字号(单位px)',
  `create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `version` int(11) DEFAULT NULL COMMENT '版本',
  `remarks` varchar(200) DEFAULT NULL COMMENT '备注',
  `del_flag` tinyint(2) DEFAULT '0' COMMENT '删除标志 0正常1删除',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='打印字段配置表';

 查询在源数据中 但是不在某公司下的字段

<select id="getNoList" resultType="com.sm.qh.busprint.entity.BusPrintField">
        select b.*, c.id as cid
        from bus_print_field b left join bus_print_field_setting c
            on c.bus_print_field_id = b.id
            and c.company_id = #{companyId}
            and c.del_flag = 0
        where c.id is NULL
          and b.del_flag = 0
    </select>

上一步查出来的字段 插入到公司自己的子段中,插入前做已有判断

<insert id="updateField">
        insert into bus_print_field_setting
        (id, company_id, bus_print_field_id, name, type, sort, is_bold, is_show, is_sort, font_size)
        <foreach collection="list" item="item" index="index" separator="UNION ALL">
            select
                (select REPLACE(UUID(), '-', '') as id),
                #{busPrintFieldSetting.companyId},
                #{item.id},
                #{item.name},
                #{item.type},
                #{item.sort},
                #{item.isBold},
                #{item.isShow},
                #{item.isSort},
                #{item.fontSize}
            from DUAL
            where not exists
            (select a.id from bus_print_field_setting a where a.bus_print_field_id = #{item.id} and a.company_id = #{busPrintFieldSetting.companyId} and a.del_flag = 0)
        </foreach>

    </insert>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值