All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.panxiaochao.mybatis.plus.injector.UpdateBatchSomeColumn Maven / Gradle / Ivy

/*
 * Copyright © 2022-2023 Lypxc ([email protected])
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package io.github.panxiaochao.mybatis.plus.injector;

import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlSource;

/**
 * 

* 批量更新注入器 *

* * 注意:这种实现方式要 特别注意数据库SQL语句的长度限制,在进行数据合并在同一SQL中务必不能超过SQL长度限制,通过max_allowed_packet * 配置可以修改,默认是1M,测试时修改为8M。 * * @author Lypxc * @since 2023-09-08 */ public class UpdateBatchSomeColumn extends AbstractMethod { private static final long serialVersionUID = 794731765508860279L; /** * 默认方法名 */ public UpdateBatchSomeColumn() { super("updateBatchSomeColumn"); } @Override public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo tableInfo) { String sql = ""; String additional = tableInfo.isWithVersion() ? tableInfo.getVersionFieldInfo().getVersionOli("item", "item.") : "" + tableInfo.getLogicDeleteSql(true, true); String setSql = sqlSet(tableInfo.isWithLogicDelete(), false, tableInfo, false, "item", "item."); String sqlResult = String.format(sql, tableInfo.getTableName(), setSql, tableInfo.getKeyColumn(), "item." + tableInfo.getKeyProperty(), additional); SqlSource sqlSource = languageDriver.createSqlSource(configuration, sqlResult, modelClass); return this.addUpdateMappedStatement(mapperClass, modelClass, "updateBatchSomeColumn", sqlSource); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy