mybatis-plus通过注入器实现批量插入

  1. 首先创建一个基础接口继承mybatis-plus的BaseMapper,同时添加一个批量插入方法
public interface CustomMapper<T> extends BaseMapper<T> {

    /**
     * 批量插入数据
     *
     * @param collection 插入集合
     * @return 插入条数
     */
    Integer insertBatchSomeColumn(Collection<T> collection);

    
}
  1. 创建sql注入器类继承DefaultSqlInjector,并重写getMethodList,将批量插入方法添加进去
public class CustomSqlInterceptor extends DefaultSqlInjector {

    @Override
    public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
        List<AbstractMethod> methods = super.getMethodList(mapperClass,tableInfo);
        methods.add(new InsertBatchSomeColumn());
        return methods;
    }
}
  1. 创建mybatis-plus配置类,将刚才的注入器注册到spring容器中
@Configuration
@EnableTransactionManagement
public class MybatisPlusConfig {

    /**
     * 定义批量插入方法
     */
    @Bean
    public CustomSqlInterceptor customSqlInterceptor() {
        return new CustomSqlInterceptor();
    }
}
  1. 创建一个业务mapper继承刚才创建的CustomMapper
@Mapper
public interface UserMapper extends CustomMapper<User> {

}
  1. 测试批量添加方法
//用户实体
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "User", description = "用户信息")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 用户名
     */
    @ApiModelProperty(value = "用户名")
    private String userName;

    /**
     * 用户电话
     */
    @ApiModelProperty(value = "用户电话")

    private String phone;

    /**
     * 用户密码
     */
    @ApiModelProperty(value = "用户密码")

    private String passWord;

    /**
     * 数据状态:1-正常,2-删除
     */
    @ApiModelProperty(value = "数据状态")
    private Integer state;


}
//service
@Service
@Transactional(rollbackFor = Exception.class)
public class UserServiceImpl implements UserService {


    @Resource
    private UserMapper userMapper;


    @Override
    public Integer batchInsertUser(List<User> userList) {
        return userMapper.insertBatchSomeColumn(userList);
    }

}
//controller

@RestController
@RequestMapping("/user")
@CrossOrigin
@Api(tags = "用户控制类")
public class UserController {

    @Resource
    private UserService userService;

    @PostMapping("/batchInsertUser")
    @ApiOperation(value = "批量插入用户信息", notes = "批量插入用户信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userList", value = "用户集合", allowMultiple = true, paramType = "body", dataType = "User", required = true)
    })
    public Integer batchInsertUser(@RequestBody() @Validated List<User> userList) {
        return userService.batchInsertUser(userList);
    }

}
  1. 批量插入结果

插入前

请求json

[
  {
    "passWord": "111111",
    "phone": "11000000000",
    "state": 1,
    "userName": "张三"
  },
  {
    
    "passWord": "222222",
    "phone": "12000000000",
    "state": 1,
    "userName": "李四"
  },
    {
    
    "passWord": "333333",
    "phone": "13000000000",
    "state": 1,
    "userName": "王五"
  }
]

插入后

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工地精神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值