MyBatis Generator实现分页插件

来源:互联网 发布:node dev 安装与使用 编辑:程序博客网 时间:2024/03/29 13:47

 新建工程,继承PluginAdapter

<dependencies>    <dependency>        <groupId>org.mybatis.generator</groupId>        <artifactId>mybatis-generator-core</artifactId>        <version>1.3.5</version>        <scope>provided</scope>    </dependency></dependencies>
public class PaginationPlugin extends PluginAdapter {    public boolean validate(List<String> list) {        return true;    }    /**     * 为每个Example类添加limitoffset属性已经setget方法     */    @Override    public boolean modelExampleClassGenerated(TopLevelClass topLevelClass,                                              IntrospectedTable introspectedTable) {        PrimitiveTypeWrapper integerWrapper = FullyQualifiedJavaType.getIntInstance()                .getPrimitiveTypeWrapper();        Field limit = new Field();        limit.setName("limit");        limit.setVisibility(JavaVisibility.PRIVATE);        limit.setType(integerWrapper);        topLevelClass.addField(limit);        Method setLimit = new Method();        setLimit.setVisibility(JavaVisibility.PUBLIC);        setLimit.setName("setLimit");        setLimit.addParameter(new Parameter(integerWrapper, "limit"));        setLimit.addBodyLine("this.limit = limit;");        topLevelClass.addMethod(setLimit);        Method getLimit = new Method();        getLimit.setVisibility(JavaVisibility.PUBLIC);        getLimit.setReturnType(integerWrapper);        getLimit.setName("getLimit");        getLimit.addBodyLine("return limit;");        topLevelClass.addMethod(getLimit);        Field offset = new Field();        offset.setName("offset");        offset.setVisibility(JavaVisibility.PRIVATE);        offset.setType(integerWrapper);        topLevelClass.addField(offset);        Method setOffset = new Method();        setOffset.setVisibility(JavaVisibility.PUBLIC);        setOffset.setName("setOffset");        setOffset.addParameter(new Parameter(integerWrapper, "offset"));        setOffset.addBodyLine("this.offset = offset;");        topLevelClass.addMethod(setOffset);        Method getOffset = new Method();        getOffset.setVisibility(JavaVisibility.PUBLIC);        getOffset.setReturnType(integerWrapper);        getOffset.setName("getOffset");        getOffset.addBodyLine("return offset;");        topLevelClass.addMethod(getOffset);        return true;    }    /**     * Mapper.xml selectByExample 添加 limit     */    @Override    public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(XmlElement element,                                                                     IntrospectedTable introspectedTable) {        addPageElement(element);        return true;    }    /**     * Mapper.xml selectByExampleWithBLOBs 添加 limit     */    @Override    public boolean sqlMapSelectByExampleWithBLOBsElementGenerated(XmlElement element,                                                                  IntrospectedTable introspectedTable) {        addPageElement(element);        return true;    }    private void addPageElement(XmlElement element) {        XmlElement ifLimitNotNullElement = new XmlElement("if");        ifLimitNotNullElement.addAttribute(new Attribute("test", "limit != null"));        XmlElement ifOffsetNotNullElement = new XmlElement("if");        ifOffsetNotNullElement.addAttribute(new Attribute("test", "offset != null"));        ifOffsetNotNullElement.addElement(new TextElement("limit ${offset}, ${limit}"));        ifLimitNotNullElement.addElement(ifOffsetNotNullElement);        XmlElement ifOffsetNullElement = new XmlElement("if");        ifOffsetNullElement.addAttribute(new Attribute("test", "offset == null"));        ifOffsetNullElement.addElement(new TextElement("limit ${limit}"));        ifLimitNotNullElement.addElement(ifOffsetNullElement);        element.addElement(ifLimitNotNullElement);    }}

在要用的模块引入插件

<build>    <finalName>${project.artifactId}</finalName>    <plugins>        <plugin>            <groupId>org.mybatis.generator</groupId>            <artifactId>mybatis-generator-maven-plugin</artifactId>            <version>1.3.5</version>            <configuration>                <overwrite>true</overwrite>            </configuration>            <dependencies>                <dependency>                    <groupId>mysql</groupId>                    <artifactId>mysql-connector-java</artifactId>                    <version>5.1.34</version>                </dependency>                <dependency>                    <groupId>****</groupId>                    <artifactId>near-mybatis-generator-extends</artifactId>                    <version>1.0.0</version>                </dependency>            </dependencies>        </plugin>    </plugins></build>

generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration>    <context id="mysql_systemcore" targetRuntime="MyBatis3">        <plugin type="org.***.plugins.PaginationPlugin"/>        <commentGenerator>            <property name="suppressAllComments" value="true"/>        </commentGenerator>        <jdbcConnection driverClass="com.mysql.jdbc.Driver"                        connectionURL="jdbc:mysql://192.168.1.45:3306/***"                        userId="***"                        password="***"/>        <javaModelGenerator targetPackage="com.***.dal.dataobj"                            targetProject="src/main/java">            <property name="trimStrings" value="true"/>        </javaModelGenerator>        <sqlMapGenerator targetPackage="sqlmap"                         targetProject="src/main/resources/META-INF"/>        <javaClientGenerator targetPackage="com.***.dal.mapper"                             targetProject="src/main/java" type="XMLMAPPER"/>        <!--        <table tableName="usr_wechat_user"               domainObjectName="WechatUser"               enableDeleteByPrimaryKey="false"               enableDeleteByExample="false"               enableCountByExample="false"/>        -->        <table tableName="user_info"               domainObjectName="UserInfoDO"/>    </context></generatorConfiguration>


原创粉丝点击