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
- mybatis 代码生成工具支持oracle mysql 分页
- MyBatis代码生成工具
- [Mybatis]代码生成工具
- Mybatis 代码生成工具
- Mybatis代码生成工具
- JAVA中Mybatis连接oracle数据库自动生成代码工具
- DataDictionaryTool 一款生成数据库字典工具支持mysql和oracle
- 基于Mybatis的Mysql数据库文档生成工具,支持生成docx(原创)
- Mybatis 自动生成代码工具
- Mybatis 自动生成代码工具
- mybatis代码自动生成工具
- Mybatis 自动生成代码工具
- 【Mybatis】自动生成代码工具
- MyBatis-generator 代码生成工具
- mybatis代码自动生成工具
- mybatis反向生成代码工具
- MyBatis分页插件:使用很灵活,有全部插件源码和配置,同时有测试代码和日志(目前支持Oracle和MySQL)
- mybatis代码生成工具 mybatis-generator
- mac 开启Eclipse代码提示功能
- Spark2.10中使用累加器、注意点以及实现自定义累加器
- 时间对象
- mybatis 中的<![CDATA[ ]]>
- 百度分享背景图片替换
- mybatis 代码生成工具支持oracle mysql 分页
- python zip暴力破解
- 在tensorflow中使用keras作为高层接口
- Java-Day1-数据类型
- Linux 音频设备驱动架构及应用编程
- XMind十大最有用的功能
- 在安装SQL Server 2008中出现的问题及解决办法
- 关于 django 的时区设置与MySQL 时间相差8小时
- SparkStreaming 运行架构