MySql+Mybatis+Druid 优化之MyBatis批量删除、更新

本文探讨了在业务需求中批量删除和更新数据的两种主要方法:业务代码循环处理和SQL语句一次性操作。针对MyBatis,详细介绍了如何通过标签实现批量删除和更新,包括对软删除的处理,并分析了不同方式的优缺点及性能影响。同时,提到了在执行多条SQL时需要配置jdbc连接参数allowMulQueries=true。
摘要由CSDN通过智能技术生成

业务需求:一次更新/删除多条数据,通常有两种方式:

     (1)在业务代码中循环遍历,逐条删除,业务清晰;

     (2)在sql语句中,循环删除,只操作一次数据库,这个分为两种方式:

             方式A:通过循环一个id列表,循环删除数据;

             方式B:条件为多个字段,为了更新多条记录为多个字段的不同值;

补充:这里的删除采用软删除,使用一个字段进行标记,所以,所有的删除实际就是更新。


正文:

(1)业务中循环删除

Mapper

<deleteid="deleteSingleProject"parameterType="java.lang.String">
updatet_single_project_scoresetis_delete=1,update_time=now(),operator=#{operator,jdbcType=VARCHAR}
wherestudent_id=#{studentId,jdbcType=VARCHAR}
andschool_year=#{schoolYear,jdbcType=VARCHAR}
andis_delete=0

</delete>

service业务方法

deleteSPByList接口

/**
     * 批量删除-在业务层实现批量删除-徐玲博-2017-12-11 16:25:19
     * @param singleProjectScoreEntityList 单项目成绩list
     * @param operator 操作人
     * @return 受影响行
     */
    int deleteSPByList(List<SingleProjectScoreEntity> singleProjectScoreEntityList, String operator);

deleteSPByList实现

/**
*批量删除-在业务层实现批量删除-徐玲博-2017-12-11 16:25:19
*
*@paramsingleProjectScoreEntityList单项目成绩list
*@paramoperator操作人
*@return受影响行
*/
@Override
    Public int deleteSPByList(List<SingleProjectScoreEntity>singleProjectScoreEntityList,Stringoperator){
    intresult=0;
    for(SingleProjectScoreEntitysingleProjectScoreEntity:singleProjectScoreEntityList){
    StringstudentId=singleProjectScoreEntity.getStudentId();
    StringschoolYear=singleProjectScoreEntity.getSchoolYear();
    result=deleteSingleProject(studentId,schoolYear,operator);
    result+=result;//删除数据的条数
  }
  returnresult;
}

调用的deleteSingleProject方法

/**
     * 根据学生id及学年删除项目成绩-徐玲博-2017-12-11 16:35:52
     *
     * @param studentId  学生id
     * @param schoolYear 学年
     * @param operator   操作人
     * @return 受影响行
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int deleteSingleProject(String studentId, String schoolYear, String operator) {
        return singleP
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值