门户网站推广优势,营销渠道有哪些,在线做logo,电子商务网站建设的规划和实施Spring Data Jpa 虽然可以使用参数调整批量插入#xff0c;但是仅限于主键策略不是 IDENTITY 的情况下#xff0c;对于习惯了使用 IDENTITY 的 MySQL 选手来说#xff0c;批量插入数据直接就悲剧了。幸好我们还有 JdbcTemplate 这个利器#xff0c;我们使用 Spring Data Jp…Spring Data Jpa 虽然可以使用参数调整批量插入但是仅限于主键策略不是 IDENTITY 的情况下对于习惯了使用 IDENTITY 的 MySQL 选手来说批量插入数据直接就悲剧了。幸好我们还有 JdbcTemplate 这个利器我们使用 Spring Data Jpa 的最佳实践就是使用接口继承 JpaRepository接口里面是没法注入的所以我们可以再定义一个 Batch 操作的接口public interface AdminGroupPermissionBatchRepository {public void batchInsert(List adminGroupPermissions);}然后我们的接口同时继承 Batch 这个接口再单独写一个 Batch 接口的实现就好了Spring Data Jpa 会全自动给我们搞定注入和调用的。Spring Boot 真香啊public class AdminGroupPermissionBatchRepositoryImpl implements AdminGroupPermissionBatchRepository {private final JdbcTemplate jdbcTemplate;public AdminGroupPermissionBatchRepositoryImpl(JdbcTemplate jdbcTemplate) {this.jdbcTemplate jdbcTemplate;}Overridepublic void batchInsert(List adminGroupPermissions) {jdbcTemplate.batchUpdate(INSERT INTO AdminGroupPermission.TABLE_NAME (adminGroupId,actionId) values(?,?),new BatchPreparedStatementSetter() {Overridepublic void setValues(PreparedStatement preparedStatement, int i)throws SQLException {AdminGroupPermission adminGroupPermission adminGroupPermissions.get(i);preparedStatement.setInt(1, adminGroupPermission.getAdminGroupId());preparedStatement.setString(2, adminGroupPermission.getActionId());}Overridepublic int getBatchSize() {return adminGroupPermissions.size();}});}}Resposity 接口类如下Repositorypublic interface AdminGroupPermissionRepository extends JpaRepository, AdminGroupPermissionBatchRepository {public List findAllByAdminGroupId(Integer id);ModifyingTransactionalQuery(DELETE FROM AdminGroupPermission WHERE adminGroupId ?1)public void deleteAllByAdminGroupId(Integer id);}以上只是主要代码片段