/**
*
*/
package com.hongjia.mis.oracle.database.mybatis.pojo;
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.ShellRunner;
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.PrimitiveTypeWrapper;
import org.mybatis.generator.api.dom.java.TopLevelClass;
import org.mybatis.generator.api.dom.xml.Attribute;
import org.mybatis.generator.api.dom.xml.Element;
import org.mybatis.generator.api.dom.xml.TextElement;
import org.mybatis.generator.api.dom.xml.XmlElement;
import com.alibaba.fastjson.JSON;
/**
* @author owenhuang
* @description classDescription
* @version 创建时间:2017年9月14日 上午11:28:19
*
* <plugin type="com.hongjia.mis.oracle.database.mybatis.pojo.PaginationPlugin" />
*
*/
public class PaginationPlugin extends PluginAdapter {
@Override
public boolean modelExampleClassGenerated(TopLevelClass topLevelClass,IntrospectedTable introspectedTable) {
addLimit(topLevelClass,introspectedTable,"limitStart");
addLimit(topLevelClass,introspectedTable,"limitEnd");
return super.modelExampleClassGenerated(topLevelClass,introspectedTable);
}
@Override
public boolean sqlMapBaseColumnListElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
System.out.println("---------------"+JSON.toJSONString(element));
Element elementRownum = new Element() {
@Override
public String getFormattedContent(int arg0) {
return " , ROWNUM as mis_rownum ";
}
};
element.addElement(elementRownum);
return super.sqlMapBaseColumnListElementGenerated(element, introspectedTable);
}
@Override
public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(XmlElement element,
IntrospectedTable introspectedTable) {
List<Element> elementLists = element.getElements();
// for (Element ele : elementLists) {
// System.out.println(">>00>>"+JSON.toJSONString(ele.getFormattedContent(0)));
// }
Element ele01 = new Element() {
@Override
public String getFormattedContent(int arg0) {
StringBuilder sb = new StringBuilder();
sb.append(" select ");
sb.append(" <include refid=\"Base_Column_List\" />");
sb.append(" from ( ");
sb.append(" select ");
return sb.toString();
}
};
element.getElements().remove(0);
element.getElements().add(0,ele01);
Element eleLast = new Element() {
@Override
public String getFormattedContent(int arg0) {
StringBuilder sb = new StringBuilder();
sb.append(" ) ");
// sb.append(" where mis_rownum between 1 and 10 ");
return sb.toString();
}
};
element.getElements().add(eleLast);
// for (Element ele : elementLists) {
// System.out.println(">>01>>"+JSON.toJSONString(ele.getFormattedContent(0)));
// }
//
// System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>");
// System.out.println(JSON.toJSONString(element));
// System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<");
XmlElement isNotNullElement= new XmlElement("if");
isNotNullElement.addAttribute(new Attribute("test","limitStart != null and limitStart >=1 "));//$NON-NLS-1$ //$NON-NLS-2$
isNotNullElement.addElement(new TextElement(" where mis_rownum between ${limitStart} and ${limitEnd}"));
element.addElement(isNotNullElement);
return super.sqlMapUpdateByExampleWithoutBLOBsElementGenerated(element,introspectedTable);
}
private void addLimit(TopLevelClass topLevelClass, IntrospectedTable introspectedTable, String name){
CommentGenerator commentGenerator =context.getCommentGenerator();
Field field= new Field();
field.setVisibility(JavaVisibility.PROTECTED);
field.setType(FullyQualifiedJavaType.getIntInstance());
field.setName(name);
field.setInitializationString("0");
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(FullyQualifiedJavaType.getIntInstance(),name));
method.addBodyLine("this." +name+ "=" +name+ ";");
commentGenerator.addGeneralMethodComment(method,introspectedTable);
topLevelClass.addMethod(method);
method= new Method();
method.setVisibility(JavaVisibility.PUBLIC);
method.setReturnType(FullyQualifiedJavaType.getIntInstance());
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;
}
public static void generate() {
String config= PaginationPlugin.class.getClassLoader().getResource("generatorConfig.xml").getFile();
String[] arg= { "-configfile", config, "-overwrite"};
ShellRunner.main(arg);
}
public static void main(String[] args) {
generate();
}
}
<?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>
<!-- classPathEntry:数据库的JDBC驱动的jar包地址-->
<classPathEntry location="D:\SVN\mis-20170829\realease_02\hongjia-mis-webservice-pojo\lib\ojdbc7.jar" />
<context id="MysqlTables" targetRuntime="MyBatis3">
<plugin type="com.hongjia.mis.oracle.database.mybatis.pojo.PaginationPlugin" />
<!-- 注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true"/> <!-- 是否取消注释 -->
<property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳-->
</commentGenerator>
<!-- JDBC连接 -->
<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@10.1.2.101:1521:misdev"
userId="ecology"
password="ecology">
</jdbcConnection>
<!-- 类型转换 -->
<javaTypeResolver >
<!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成实体类地址 -->
<javaModelGenerator targetPackage="com.hongjia.mis.oracle.database.mybatis.pojo" targetProject="D:\SVN\mis-20170829\realease_02\hongjia-mis-webservice-pojo\src\main\java">
<property name="enableSubPackages" value="true" /> <!-- 是否在当前路径下新加一层-->
<property name="trimStrings" value="true" /> <!-- 是否针对string类型的字段在set的时候进行trim调用 -->
</javaModelGenerator>
<!-- 生成MAPXML文件 -->
<sqlMapGenerator targetPackage="sqlmap" targetProject="D:\SVN\mis-20170829\realease_02\hongjia-mis-webservice-pojo\src\main\resources">
<property name="enableSubPackages" value="true" /> <!-- 是否在当前路径下新加一层-->
</sqlMapGenerator>
<!-- 生成DAO -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.hongjia.mis.oracle.database.mybatis.dao" targetProject="D:\SVN\mis-20170829\realease_02\hongjia-mis-webservice-pojo\src\main\java">
<property name="enableSubPackages" value="true" /> <!-- 是否在当前路径下新加一层-->
</javaClientGenerator>
<!-- 配置表信息
java -jar D:\SVN\mis-20170829\realease_02\hongjia-mis-webservice-pojo\lib\mybatis-generator-core-1.3.2.jar -configfile D:\SVN\mis-20170829\realease_02\hongjia-mis-webservice-pojo\src\main\resources\generatorConfig.xml -overwrite
-->
<table tableName="formtable_main_198" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true" ></table>
<!--
<table tableName="zdy_bankpaymentjob_t" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true" ></table>
<table tableName="workflow_base" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true" ></table>
<table tableName="formtable_main_198" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true" ></table>
-->
</context>
</generatorConfiguration>