栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis批量修改封装

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis批量修改封装

重点重点重点,不然会报错

连接数据库url后面加个参数
allowMultiQueries=true

用习惯了 insertList 怎么能没有 updateList呢

就两个类 直接上代码

package com.lancabbage.gorgeous.utils.mybatis;

import org.apache.ibatis.mapping.MappedStatement;
import tk.mybatis.mapper.entity.EntityColumn;
import tk.mybatis.mapper.mapperhelper.EntityHelper;
import tk.mybatis.mapper.mapperhelper.MapperHelper;
import tk.mybatis.mapper.mapperhelper.MapperTemplate;
import tk.mybatis.mapper.mapperhelper.SqlHelper;

import java.util.Set;

import static tk.mybatis.mapper.mapperhelper.SqlHelper.whereVersion;


public class ListUpdateProvider extends MapperTemplate {

    public ListUpdateProvider(Class mapperClass, MapperHelper mapperHelper) {
        super(mapperClass, mapperHelper);
    }

//    
//    public String updateByPrimaryKey(MappedStatement ms) {
//        Class entityClass = getEntityClass(ms);
//        StringBuilder sql = new StringBuilder();
//        sql.append(SqlHelper.updateTable(entityClass, tableName(entityClass)));
//        sql.append(SqlHelper.updateSetColumns(entityClass, null, false, false));
//        sql.append(SqlHelper.wherePKColumns(entityClass, true));
//        return sql.toString();
//    }

    
    public String updateByPrimaryKeySelectiveList(MappedStatement ms) {
        Class entityClass = getEntityClass(ms);
        StringBuilder sql = new StringBuilder();
        sql.append("");
        //set
        sql.append(SqlHelper.updateTable(entityClass, tableName(entityClass)));
        sql.append(SqlHelper.updateSetColumns(entityClass, "record", true, isNotEmpty()));
        //where
        sql.append("");
        Set columnSet = EntityHelper.getPKColumns(entityClass);
        //当某个列有主键策略时,不需要考虑他的属性是否为空,因为如果为空,一定会根据主键策略给他生成一个值
        for (EntityColumn column : columnSet) {
            sql.append(" AND ").append(column.getColumnEqualsHolder("record"));
        }
        sql.append(whereVersion(entityClass));
        sql.append("");
        sql.append(" ;n");

        sql.append("");
        return sql.toString();
    }
}
package com.lancabbage.gorgeous.utils.mybatis;

import org.apache.ibatis.annotations.UpdateProvider;
import tk.mybatis.mapper.annotation.RegisterMapper;

import java.util.List;


@RegisterMapper
public interface ListUpdateByPrimaryKeySelectiveMapper {

    
    @UpdateProvider(type = ListUpdateProvider.class, method = "dynamicSQL")
    int updateByPrimaryKeySelectiveList(List record);

}

我是使用的是Tk.mybatis。代码是复制的原来的updateByPrimaryKeySelective的代码进行的微调

保证最终的结构类似这种就ok


  UPDATE project 
    id = id,
      name = #{record.name},
      remote_path = #{record.remotePath},
      create_time = #{record.createTime},
      is_show = #{record.isShow},
      display_order = #{record.displayOrder},
    
    AND id = #{record.id}

使用 就和其他的一样 在你的Mapper类上继承这个类ListUpdateByPrimaryKeySelectiveMapper就好了

public interface baseMapper extends Mapper, MySqlMapper, ListUpdateByPrimaryKeySelectiveMapper {

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/355879.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号