mybatis 代码生成工具支持oracle mysql 分页

来源:互联网 发布:21天学通java第7版好吗 编辑:程序博客网 时间:2024/06/12 05:44

编写分页插件即可
mysql

package org.mybatis.generator.plugins;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.JavaVisibility;import org.mybatis.generator.api.dom.java.Method;import org.mybatis.generator.api.dom.java.Parameter;import org.mybatis.generator.api.dom.java.PrimitiveTypeWrapper;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;import org.mybatis.generator.config.Context;public class MySQLPaginationPlugin extends PluginAdapter{  public boolean modelExampleClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable)  {    addLimit(topLevelClass, introspectedTable, "limitStart");    addLimit(topLevelClass, introspectedTable, "limitEnd");    return super.modelExampleClassGenerated(topLevelClass, introspectedTable);  }  public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable)  {    XmlElement isNotNullElement = new XmlElement("if");    isNotNullElement.addAttribute(new Attribute("test", "limitStart != null and limitStart>=0"));    isNotNullElement.addElement(new TextElement("limit #{limitStart} , #{limitEnd}"));    element.addElement(isNotNullElement);    return super.sqlMapUpdateByExampleWithoutBLOBsElementGenerated(element, introspectedTable);  }  private void addLimit(TopLevelClass topLevelClass, IntrospectedTable introspectedTable, String name)  {    CommentGenerator commentGenerator = this.context.getCommentGenerator();    Field field = new Field();    field.setVisibility(JavaVisibility.PROTECTED);    field.setType(PrimitiveTypeWrapper.getIntegerInstance());    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(PrimitiveTypeWrapper.getIntegerInstance(), name));    method.addBodyLine("this." + name + "=" + name + ";");    commentGenerator.addGeneralMethodComment(method, introspectedTable);    topLevelClass.addMethod(method);    method = new Method();    method.setVisibility(JavaVisibility.PUBLIC);    method.setReturnType(PrimitiveTypeWrapper.getIntegerInstance());    method.setName("get" + camel);    method.addBodyLine("return " + name + ";");    commentGenerator.addGeneralMethodComment(method, introspectedTable);    topLevelClass.addMethod(method);  }  public boolean validate(List<String> warnings) {    return true;  }}

oracle

package org.mybatis.generator.plugins;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.JavaVisibility;import org.mybatis.generator.api.dom.java.Method;import org.mybatis.generator.api.dom.java.Parameter;import org.mybatis.generator.api.dom.java.PrimitiveTypeWrapper;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;import org.mybatis.generator.config.Context;public class OraclePaginationPlugin extends PluginAdapter{  public boolean modelExampleClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable)  {    addLimit(topLevelClass, introspectedTable, "limitStart");    addLimit(topLevelClass, introspectedTable, "limitEnd");    return super.modelExampleClassGenerated(topLevelClass,       introspectedTable);  }  public boolean sqlMapDocumentGenerated(Document document, IntrospectedTable introspectedTable)  {    XmlElement parentElement = document.getRootElement();    XmlElement paginationPrefixElement = new XmlElement("sql");    paginationPrefixElement.addAttribute(      new Attribute("id",       "OracleDialectPrefix"));    XmlElement pageStart = new XmlElement("if");    pageStart.addAttribute(new Attribute("test", "limitStart != null and limitStart>=1 and limitEnd != null and limitEnd>=1"));    pageStart.addElement(      new TextElement("select * from (select t.*, rownum r from ( "));    paginationPrefixElement.addElement(pageStart);    parentElement.addElement(paginationPrefixElement);    XmlElement paginationSuffixElement = new XmlElement("sql");    paginationSuffixElement.addAttribute(      new Attribute("id",       "OracleDialectSuffix"));    XmlElement pageEnd = new XmlElement("if");    pageEnd.addAttribute(new Attribute("test", "limitStart != null and limitStart>=1 and limitEnd != null and limitEnd>=1"));    pageEnd.addElement(      new TextElement("<![CDATA[ ) t where rownum <= #{limitEnd}  )  where r >= #{limitStart}  ]]>"));    paginationSuffixElement.addElement(pageEnd);    parentElement.addElement(paginationSuffixElement);    return super.sqlMapDocumentGenerated(document, introspectedTable);  }  public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable)  {    XmlElement pageStart = new XmlElement("include");    pageStart.addAttribute(new Attribute("refid", "OracleDialectPrefix"));    element.getElements().add(0, pageStart);    XmlElement isNotNullElement = new XmlElement("include");    isNotNullElement.addAttribute(      new Attribute("refid",       "OracleDialectSuffix"));    element.getElements().add(isNotNullElement);    return super.sqlMapUpdateByExampleWithoutBLOBsElementGenerated(element,       introspectedTable);  }  private void addLimit(TopLevelClass topLevelClass, IntrospectedTable introspectedTable, String name)  {    CommentGenerator commentGenerator = this.context.getCommentGenerator();    Field field = new Field();    field.setVisibility(JavaVisibility.PROTECTED);    field.setType(PrimitiveTypeWrapper.getIntegerInstance());    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(PrimitiveTypeWrapper.getIntegerInstance(), name));    method.addBodyLine("this." + name + "=" + name + ";");    commentGenerator.addGeneralMethodComment(method, introspectedTable);    topLevelClass.addMethod(method);    method = new Method();    method.setVisibility(JavaVisibility.PUBLIC);    method.setReturnType(PrimitiveTypeWrapper.getIntegerInstance());    method.setName("get" + camel);    method.addBodyLine("return " + name + ";");    commentGenerator.addGeneralMethodComment(method, introspectedTable);    topLevelClass.addMethod(method);  }  public boolean validate(List<String> warnings)  {    return true;  }}

配置文件插件
org.mybatis.generator.plugins.OraclePaginationPlugin

<?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="DB2Tables" targetRuntime="MyBatis3">        <plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">            <property name="searchString" value="Example$" />            <property name="replaceString" value="Criteria" />        </plugin>        <plugin type="org.mybatis.generator.plugins.OraclePaginationPlugin" />            <commentGenerator>            <property name="suppressDate" value="true" />            <property name="suppressAllComments" value="true" />        </commentGenerator>         <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"                   connectionURL="jdbc:oracle:thin:@10.1.228.222:1521:DEVORA"                   userId="deviot"                   password="viviot">           </jdbcConnection>         <javaTypeResolver            type="org.mybatis.generator.internal.types.JavaTypeResolver4MvneImpl">            <property name="forceBigDecimals" value="false" />        </javaTypeResolver>        <javaModelGenerator targetPackage="com.ai.runner.sdiot.dao.mapper.bo"            targetProject="F:\work\SD\Runner-Sdiot\src\main\java">            <property name="enableSubPackages" value="true" />            <property name="trimStrings" value="true" />        </javaModelGenerator>        <sqlMapGenerator targetPackage="mybatis.mapper.sdiot"            targetProject="F:\work\SD\Runner-Sdiot\src\main\resources">            <property name="enableSubPackages" value="true" />        </sqlMapGenerator>        <javaClientGenerator type="XMLMAPPER"            targetPackage="com.ai.runner.sdiot.dao.mapper.interfaces"            targetProject="F:\work\SD\Runner-Sdiot\src\main\java">            <property name="enableSubPackages" value="true" />        </javaClientGenerator>                  <table tableName="group_subaccount_card_rel" enableCountByExample="true"            enableUpdateByExample="true" enableDeleteByExample="true"            enableSelectByExample="true" selectByExampleQueryId="true" />               </context></generatorConfiguration>
0 0