maven package 打包时,会执行 mybatis-generator-maven-plugin 插件,请问为什么 10

 我来答
pakkilee
2016-08-11 · TA获得超过334个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:216万
展开全部
在使用 mybatis-generator-maven-plugin 进行代码生成后,可能会发现,有些通用方法并没有生成,譬如删除操作,数据库中的数据都是有意义的,删除时尽量都是进行逻辑删除操作的,如果使用代码生成器的删除方法,那么数据会物理删除,这种方法并不是我们所需要的,那么,我们就需要在代码生成过程中,添加一个方法 deleteLogicByIds, 这样,所有代码生成的过程中,如果能够自动生成这个方法,那么,我们的代码量就相当少了。

我们在创建表结构之后,通过 mvn 命令生成代码的过程中,自动生成了我们自定义的一个方法,多么美妙的一件事情。

先上git : http://git.oschina.net/alexgaoyh/MutiModule-parent
其中,generatorConfig.xml 文件中,增加

<plugin type="com.MutiModule.common.mybatis.plugin.PaginationPlugin"></plugin>
<plugin type="com.MutiModule.common.mybatis.plugin.DeleteLogicByIdsPlugin"></plugin>

package com.MutiModule.common.mybatis.plugin;

import java.util.List;

import org.mybatis.generator.api.CommentGenerator;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
import org.mybatis.generator.api.dom.java.JavaVisibility;
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.TextElement;
import org.mybatis.generator.api.dom.xml.XmlElement;

/**
* mybais mysql 分页相关,扩展 mybatis-generator-maven-plugin 插件功能,生成分页相关
* @author alexgaoyh
*
*/
public class PaginationPlugin extends PluginAdapter {

@Override
public boolean modelExampleClassGenerated(TopLevelClass topLevelClass,
IntrospectedTable introspectedTable) { // add field, getter, setter
// for limit clause
addPage(topLevelClass, introspectedTable, "page");
return super.modelExampleClassGenerated(topLevelClass,
introspectedTable);
}

@Override
public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(
XmlElement element, IntrospectedTable introspectedTable) {
XmlElement page = new XmlElement("if");
page.addAttribute(new Attribute("test", "page != null"));
page.addElement(new TextElement("limit #{page.begin} , #{page.length}"));
element.addElement(page);
return super.sqlMapUpdateByExampleWithoutBLOBsElementGenerated(element,
introspectedTable);
}

/**
* @param topLevelClass
* @param introspectedTable
* @param name
*/
private void addPage(TopLevelClass topLevelClass,
IntrospectedTable introspectedTable, String name) {
topLevelClass.addImportedType(new FullyQualifiedJavaType(
"com.MutiModule.common.vo.mybatis.pagination.Page"));
CommentGenerator commentGenerator = context.getCommentGenerator();
Field field = new Field();
field.setVisibility(JavaVisibility.PROTECTED);
field.setType(new FullyQualifiedJavaType(
"com.MutiModule.common.vo.mybatis.pagination.Page"));
field.setName(name);
commentGenerator.addFieldComment(field, introspectedTable);
topLevelClass.addField(field);
char c = name.charAt(0);
String camel = Character.toUpperCase(c) + name.substring(1);
Method method = new Method();
method.setVisibility(JavaVisibility.PUBLIC);
method.setName("set" + camel);
method.addParameter(new Parameter(new FullyQualifiedJavaType(
"com.MutiModule.common.vo.mybatis.pagination.Page"), name));
method.addBodyLine("this." + name + "=" + name + ";");
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
method = new Method();
method.setVisibility(JavaVisibility.PUBLIC);
method.setReturnType(new FullyQualifiedJavaType(
"com.MutiModule.common.vo.mybatis.pagination.Page"));
method.setName("get" + camel);
method.addBodyLine("return " + name + ";");
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
}

/**
* This plugin is always valid - no properties are required
*/
public boolean validate(List<String> warnings) {
return true;
}
}
佳达源
2024-10-28 广告
AR0144CSSM20SUKA0-CPBR这款产品,作为我司产品线中的重要一员,集成了高精度的传感器技术与先进的图像处理算法,广泛应用于安防监控、工业自动化及机器视觉等领域。其卓越的性能与稳定性,确保了在各种复杂环境下的精准数据采集与高效... 点击进入详情页
本回答由佳达源提供
百度网友7c14418
2017-08-01 · TA获得超过133个赞
知道答主
回答量:22
采纳率:0%
帮助的人:5.9万
展开全部

问题就是mybatis-generator-maven-plugin默认绑定了package的生命周期,如果你不想在package和install 执行插件,你可以这样配置

<executions>
    <execution>
        <id>Generate MyBatis Artifacts</id>
        <phase>deploy</phase>
        <goals>
            <goal>generate</goal>
        </goals>
    </execution>
</executions>

<phase>deploy</phase>

主要是phase 修改成往后即可,问题比较久远了,主要是给后来人看的

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式