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

date.yetao.maven.all.mybatis.DeleteUseFlagPlugin Maven / Gradle / Ivy

/*
 * Copyright 2017 yetao <[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 date.yetao.maven.all.mybatis;

import java.util.List;
import java.util.Properties;
import org.mybatis.generator.api.IntrospectedColumn;

import org.mybatis.generator.api.PluginAdapter;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
import org.mybatis.generator.api.dom.java.Interface;
import org.mybatis.generator.api.dom.java.Method;
import org.mybatis.generator.api.dom.java.Parameter;
import org.mybatis.generator.api.dom.java.TopLevelClass;
import org.mybatis.generator.api.dom.xml.Attribute;
import org.mybatis.generator.api.dom.xml.Document;
import org.mybatis.generator.api.dom.xml.TextElement;
import org.mybatis.generator.api.dom.xml.XmlElement;

/**
 * 增加deleteUseFlag方法的插件
 * 

* * @author yetao <[email protected]> */ public class DeleteUseFlagPlugin extends PluginAdapter { /** * 标记删除的字段 */ private static final String DEL_FLAG = "del_flag"; public DeleteUseFlagPlugin() { super(); } @Override public boolean validate(List warnings) { // this plugin is always valid return true; } @Override public void setProperties(Properties properties) { super.setProperties(properties); } @Override public boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { // 判断是否需要添加deleteUseFlag方法 List allColumns = introspectedTable.getAllColumns(); if (allColumns == null || allColumns.isEmpty()) { return true; } // 判断接口是否为null if (interfaze == null) { return true; } for (IntrospectedColumn col : allColumns) { if (DEL_FLAG.equalsIgnoreCase(col.getActualColumnName())) { // 找到了就添加方法 Method method = new Method(); method.setName("deleteUseFlag"); method.setReturnType(new FullyQualifiedJavaType("int")); List primaryKeyColumns = introspectedTable.getPrimaryKeyColumns(); IntrospectedColumn priCol = primaryKeyColumns.get(0); Parameter para = new Parameter(priCol.getFullyQualifiedJavaType(), priCol.getJavaProperty()); method.addParameter(para); // 添加注释 method.addJavaDocLine("/**"); method.addJavaDocLine(" * This method was generated by MyBatis Generator."); method.addJavaDocLine(" * This method corresponds to the database table "+introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime()); method.addAnnotation(" *"); method.addAnnotation(" * @mbg.generated"); method.addAnnotation(" */"); interfaze.addMethod(method); return true; } } return true; } /** * 增加deleteUseFlag的Mapper *

* * @param document * @param introspectedTable * @return */ @Override public boolean sqlMapDocumentGenerated(Document document, IntrospectedTable introspectedTable) { // 判断是否需要添加deleteUseFlag方法 List allColumns = introspectedTable.getAllColumns(); if (allColumns == null || allColumns.isEmpty()) { return true; } for (IntrospectedColumn col : allColumns) { if (DEL_FLAG.equalsIgnoreCase(col.getActualColumnName())) { // 找到了就添加Mapper XmlElement root = document.getRootElement(); XmlElement del = new XmlElement("update"); del.addAttribute(new Attribute("id", "deleteUseFlag")); List primaryKeyColumns = introspectedTable.getPrimaryKeyColumns(); IntrospectedColumn priCol = primaryKeyColumns.get(0); String colName = priCol.getActualColumnName(); del.addAttribute(new Attribute("parameterType", priCol.getFullyQualifiedJavaType().getFullyQualifiedName())); del.addElement(new TextElement("")); del.addElement(new TextElement("update " + introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime())); del.addElement(new TextElement("set " + DEL_FLAG + " = 1")); del.addElement(new TextElement("where " + colName + " = #{" + priCol.getJavaProperty() + ",jdbcType=" + priCol.getJdbcTypeName() + "}")); root.addElement(del); return true; } } return true; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy