MyBatis万能插入语句
前言
最近需要做一个动态新增数据的接口,表名、列名、数据都是动态传进来的
需要一个接口就可以把所有表数据新增成功
-
第一种方式
/**
* 插入数据
* @param tableName 表名
* @param tableColumns 列集合
* @param dataList 数据集合
*/
void insertTableData( @Param("tableName") String tableName,
@Param("columnList") List<String> columnList,
@Param("dataList") List<List<String>> dataList);
<!-- 插入数据 -->
<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>
-
第二种方式
/**
* 插入数据
* @param tableName 表名
* @param columnList 列
* @param dataMap 数据
*/
void insertTableData(@Param("tableName") String tableName,
@Param("columnList") List<String> columnList,
@Param("dataMap") List<Map> dataList);
<!-- 插入数据-->
<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