springboot mybatis oracle插入SQL动态字段和值使用Map实现单条或批量插入

直接看代码

场景1:

Mapper

@Mapper
public interface ExcelDataMapper {

    public void insertExcelData(@Param("params")LinkedHashMap<String, Object> linkMap, @Param("tableName")String tableName);

    public void batchExceDataInsert(@Param("list") ArrayList<LinkedHashMap<String, Object>> list,@Param("tableName")String tableName);
}

XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxx.xxx.oracleMapper.ExcelDataMapper">

    <insert id="insertExcelData" parameterType="java.util.LinkedHashMap">
        insert into ${tableName}
        <foreach collection="params.keys" item="key" open="(" close=")" separator=",">
            ${key}
        </foreach>
        values 
        <foreach collection="params.keys" item="key" open="(" close=")" separator=",">
            #{params[${key}]}
        </foreach>
    </insert>

<!-- 
insert all 
into 表名(字段1,字段2) VALUES ('ABCD','ABCD')
into 表名 (字段1,字段2) VALUES ('ABCD','ABCD')
select 1 from dual;
 -->
    <insert id="batchExceDataInsert" parameterType="java.util.ArrayList" >
        insert all
        <foreach collection="list" item="paramap" index="index" separator=" " > 
            into ${tableName}
            <foreach collection="paramap.keys" item="key" open="(" close=")" separator=",">
                ${key}
            </foreach>
            values 
            <foreach collection="paramap.values" item="value" open="(" close=")" separator=",">
                ${value}
            </foreach>
        </foreach>
        select 1 from dual
    </insert>

</mapper>

场景2:

Mapper

@Mapper 
public interface QueryDataMapper {

void UpdateDimensionTabData(@Param("tableName")String tableName,
        @Param("newMap")HashMap<String, Object> newMap, @Param("oldData")HashMap<String, Object> oldData);
}

XML

    <update id="UpdateDimensionTabData" parameterType="java.util.HashMap">
        UPDATE ${tableName}
        SET
        <foreach item="value" index="key" collection="newMap" separator=",">
             ${key} = #{value}
        </foreach>
        WHERE
        <foreach item="value" index="key" collection="oldData" separator="and">
           <choose>
                <when test="value ==''" >
                    ${key} is null
                </when>
                <otherwise>
                    ${key} = #{value}
                </otherwise>
            </choose>
        </foreach>
    </update>
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值