使用org.mybatis.generator生成UserExample时,无法进行分页,使用下面这个类运行generator便可以生成分页相关的属性了

package org.mybatis.generator.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.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.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;
public class PaginationMysqlPlugin 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 sqlMapSelectByExampleWithoutBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
XmlElement isNotNullElement = new XmlElement("if");
isNotNullElement.addAttribute(new Attribute("test", "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 = context.getCommentGenerator();
Field field = new Field();
field.setVisibility(JavaVisibility.PROTECTED);
field.setType(FullyQualifiedJavaType.getIntInstance());
field.setName(name);
field.setInitializationString("-1");
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);
}
public boolean validate(List<String> warnings) {
return true;
}
public static void generate() {
String config = PaginationMysqlPlugin.class.getClassLoader().getResource("generatorConfig.xml").getFile();
String[] arg = { "-configfile", config, "-overwrite" };
ShellRunner.main(arg);
}
public static void main(String[] args) {
generate();
}
}

项目代码下载:https://github.com/vincentduan/Medical.git

最新文章

  1. (原创)微信支付SDK调用的核心代码与分析(基于Android)
  2. Storyboard中segue(转场)使用
  3. iOS多线程开发
  4. 【Go语言】学习资料
  5. linux 安装 ftp
  6. JS - Cookie: getCookie, setCookie
  7. UITabBarItem编写的时候出现得图片显示异常,和有一些比较忽略的方法总结
  8. Java和Tomcat类加载机制
  9. Access自动编号的初始值设置及重置编号 转
  10. Android平台的事件处理机制和手指滑动例子
  11. ACM起步要点总结(转哈工大)
  12. Mysql的转义字符
  13. Java微信公众平台开发之公众号支付(微信内H5调起支付)
  14. [转]设置Jupyter-Notebook表格打印多个变量的值
  15. (NO.00004)iOS实现打砖块游戏(六):反弹棒类
  16. numpy中的随机数模块
  17. PHP开发API接口签名及验证
  18. python之路之简单介绍:
  19. IDEA和WebStorm破解教程--激活n年(随时更新)
  20. ie6 表格td中无内容时不显示边框的解决办法

热门文章

  1. resnet.caffemodel
  2. JAVA中等待所有线程都执行结束(转2)
  3. ios之@class
  4. vue的使用配置
  5. Centos 7 编译nginx 1.14.0
  6. rpm 包管理器
  7. Django关于SQL注意事项
  8. Dev Express中Dock panel的使用
  9. luogu4135 作诗
  10. python模块以及导入出现ImportError: No module named ‘xxx‘问题