遵义网站建设公司电话,建筑人才招聘网最新招聘,东营网站开发招聘,以下哪些是网络营销的特点MyBatis的批量插入有多种写法#xff0c;下面我将列出一些常见的批量插入写法 方式列表
使用XML配置文件进行批量插入#xff1a;在XML映射文件中使用insert标签#xff0c;并通过foreach标签迭代批量数据#xff0c;然后在SQL语句中使用VALUES关键字。使用Java注… MyBatis的批量插入有多种写法下面我将列出一些常见的批量插入写法 方式列表
使用XML配置文件进行批量插入在XML映射文件中使用insert标签并通过foreach标签迭代批量数据然后在SQL语句中使用VALUES关键字。使用Java注解进行批量插入在实体类上使用Insert注解并通过Param注解传入批量数据的参数。使用Java编程语言提供的数据绑定进行批量插入在Java代码中使用ListEntity类型的参数通过SqlSession.insert()方法进行批量插入。使用MyBatis Plus的LambdaUpdate进行批量插入在实体类上使用LambdaUpdate注解并通过Lambda表达式定义批量插入的SQL语句。使用MyBatis Plus的UpdateProvider进行批量插入在实体类上使用UpdateProvider注解并指定一个自定义的UpdateProvider类该类通过反射生成批量插入的SQL语句。使用Java编程语言提供的批处理机制进行批量插入在Java代码中使用PreparedStatement的addBatch和executeBatch方法将多个插入操作添加到批处理队列中然后一次性执行所有操作。使用MyBatis Plus的BatchExecutor进行批量插入在Java代码中使用BatchExecutor类通过指定SQL语句和参数列表执行批量插入操作。使用MyBatis Plus的BatchInsertBuilder进行批量插入在实体类上使用AutoBatchInsert注解并使用BatchInsert类提供的静态方法进行批量插入操作。使用MyBatis的批量执行器BatchExecutor进行批量插入在Java代码中使用ExecutorType.BATCH类型的执行器通过SqlSessionFactory.getSqlSession()方法获取批量执行的SqlSession然后使用SqlSession.insert()方法进行批量插入操作。使用MyBatis Plus的Mapper批量插入在Java代码中使用BaseMapper接口的insertList()方法通过传入批量插入的数据列表进行操作。
主要的方式
XML方式
insert idinsertBatch parameterTypejava.util.List INSERT INTO table_name (column1, column2, ...) VALUES foreach collectionlist itemitem separator, (#{item.column1}, #{item.column2}, ...) /foreach
/insert注解方式
LambdaUpdate({ QuerySql(INSERT INTO table_name (column1, column2, ...) VALUES , #{list,jdbcTypeVARCHAR},#{list2,jdbcTypeINTEGER})
})
void insertBatch(ListEntity list);Plus方式
servicce.saveBatch(Listentity,size)//size默认1000Provider方式
UpdateProvider(sql INSERT INTO table_name (column1, column2, ...) VALUES ,provider BatchEntityProvider.class)
void insertBatch(ListEntity list);public class BatchEntityProvider extends AbstractEntityProviderEntity { public BatchEntityProvider() { super(Entity.class); } Override public String createSql(Entity model, String sql, LambdaSqlContext ctx) { StringBuilder sqlBuilder new StringBuilder(sql); ListObject params ctx.getParams(); sqlBuilder.append( VALUES ); for (int i 0; i params.size(); i) { sqlBuilder.append((); Object param params.get(i); if (param instanceof Map) { // 当参数是一个Map时map的key对应属性名value对应属性值。属性名顺序需要和Entity保持一致。 MapString, Object map (MapString, Object) param; for (Object key : map.keySet()) { // 遍历map的key拼接sql。 sqlBuilder.append(#{ key ,jdbcType JdbcType.class.getName().replace(., ,).replace(JdbcType, ).replace(}, ).replace(}, ) },); // 去掉JdbcType后的所有括号以及.号拼接到sql中。 } } else { // 当参数不是Map时直接拼接sql。属性顺序需要和Entity保持一致。 for (int j 0; j model.getColumns().size(); j) { // 遍历Entity的所有属性拼接sql。 sqlBuilder.append(#{ model.getColumns().get(j) },); // 拼接到sql中。 } } sqlBuilder.deleteCharAt(sqlBuilder.length() - 1); // 删除最后一个逗号。 if (i ! params.size() - 1) { // 如果不是最后一个参数需要添加逗号隔开每个子语句。 sqlBuilder.append(,); } else { // 是最后一个参数不需要添加逗号隔开每个子语句。 sqlBuilder.append()); // 需要添加括号结束子语句。 } if (i ! params.size() - 1) { // 如果不是最后一个参数需要添加逗号隔开每个子语句的左括号。 sqlBuilder.append(,); } else { // 是最后一个参数不需要添加逗号隔开每个子语句的左括号。 sqlBuilder.append( ); // 需要添加空格结束每个子语句的左括号。 } } return sqlBuilder.toString(); // 返回拼接好的SQL语句。 }
}本文由mdnice多平台发布