MyBatis万能插入语句

1 篇文章 0 订阅
1 篇文章 0 订阅

MyBatis万能插入语句

前言

最近需要做一个动态新增数据的接口,表名、列名、数据都是动态传进来的

需要一个接口就可以把所有表数据新增成功

  • 第一种方式
    • 首先看Mapper(dao层)接口
        /**
         * 插入数据
         *  @param tableName    表名
         * @param tableColumns 列集合
         * @param dataList 数据集合
         */
        void insertTableData( @Param("tableName") String tableName,
                             @Param("columnList") List<String> columnList, 
                             @Param("dataList") List<List<String>> dataList);
    
    • 再看xml文件
        <!--  插入数据  -->
        <insert id="insertTableData">
            insert ignore into ${tableName}
            <foreach collection="columnList" item="column" open="(" separator="," close=")">
                `${column}`
            </foreach>
            values
            <foreach collection="dataList" item="item" separator="," >
                <foreach collection="item" item="column" open="(" separator="," close=")">
                    #{column}
                </foreach>
            </foreach>
        </insert>
    
  • 第二种方式
    • mapper(dao层)接口
        /**
         * 插入数据
         * @param tableName 表名
         * @param columnList 列
         * @param dataMap 数据
         */
        void insertTableData(@Param("tableName") String tableName, 
                        @Param("columnList") List<String> columnList, 
                        @Param("dataMap") List<Map> dataList);
    
    • xml文件
        <!--    插入数据-->
        <insert id="insertData">
            insert into ${tableName}
            <foreach collection="columnList" open="(" separator="," close=")" item="item">
                `${item}`
            </foreach>
            values
            <foreach collection="dataList" separator="," item="itemData">
                <foreach collection="itemData" open="(" separator="," close=")" item="item">
                    #{item}
                </foreach>
            </foreach>
        </insert>
    
SQL参数
  • 接口参数
参数名称参数解释类型
tableName表名称字符串
columnList表字段集合List和Map都可以
dataList数据集合List<List<Object>>或List<Map>>
  • 注意
    • 表名称必须使用 **${tableName}**方式取
    • 因为通常使用API方式获取数据,取出的数据经过JSON_FORMATTER,所有第二种插入数据的方式比较常用
    • 字段集合数必须和插入的数据数一致,否则报错
    • 字段顺序必须和数据顺序一致,否则出现串行

转载请注明地址:https://blog.csdn.net/m0_37887812/article/details/121098954

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值