mybatis结合generator进行分页插件PluginAdapter开发

使用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

时间: 2024-08-06 03:39:55

mybatis结合generator进行分页插件PluginAdapter开发的相关文章

Springboot集成mybatis通用Mapper与分页插件PageHelper(推荐)

插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 Example 相关的单表操作.通用 Mapper 是为了解决 MyBatis 使用中 90% 的基本操作,PageHelper则提供通用的分页查询功能,使用它们可以很方便的进行开发,可以节省开发人员大量的时间. 通用Mapper的GIT地址: https://gitee.com/free/Mapper 分页插件的GIT地址: https://github.com/pagehelp

MyBatis学习总结_17_Mybatis分页插件PageHelper

如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊情况请看重要提示. 想要使用分页插件?请看如何使用分页插件. 物理分页 该插件目前支持以下数据库的物理分页: Oracle Mysql MariaDB SQLite Hsqldb PostgreSQL DB2 SqlServer(2005,2008) Informix H2 SqlServer2012 配置dialect属性时,可以使用小写形式: Oracle,MySQL

MyBatis Generator实现MySQL分页插件

MyBatis Generator是一个非常方便的代码生成工具,它能够根据表结构生成CRUD代码,可以满足大部分需求.但是唯一让人不爽的是,生成的代码中的数据库查询没有分页功能.本文介绍如何让MyBatis Generator生成的代码具有分页功能. MyBatis Generator结合Maven的配置和使用 在实现分页之前,首先简单介绍MyBatis Generator如何使用. MyBatis Generator配置文件 MyBatis Generator通常会有一个xml配置文件,用来指

Mybatis Generator实现分页功能

Mybatis Generator实现分页功能 分类: IBATIS2013-07-17 17:03 882人阅读 评论(1) 收藏 举报 mybatisibatisgeneratorpage分页 众所周知,Mybatis本身没有提供基于数据库方言的分页功能,而是基于JDBC的游标分页,很容易出现性能问题.网上有很多分页的解决方案,不外乎是基于Mybatis本机的插件机制,通过拦截Sql做分页.但是在像Oracle这样的数据库上,拦截器生成的Sql语句没有变量绑定,而且每次语句的都要去拦截,感觉

SpringBoot集成MyBatis的分页插件PageHelper

俗话说:好??不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和SpringBoot的集成,它的使用也非常简单,开发更为高效.因为PageHelper插件是属于MyBatis框架的,所以相信很多哥们儿都已经用

记一次 IDEA mybatis.generator 自定义扩展插件

在使用 idea mybatis.generator 生成的代码,遇到 生成的代码很多重复的地方, 虽然代码是生成的,我们也不应该允许重复的代码出现,因为这些代码后期都要来手动维护. 对于生成时间戳注释.Example类型,xml 等大多都可以通过xml配置来,让其不生成. 然而 对于一些符合自己编码习惯的代码风格再通过配置来生成就不大现实了.对于这种情况,我么可以通过扩展  mybatis.generator 的插件来解决. 插件的编写说明网上有很多,列出几个自己看过的 http://gene

ajax+json模态框中分页(spring+struts+mybatis+easyui分页插件)

0.业务需求: 点击每个数字的时候可以显示每个对应的详细记录.也就是得点击11的时候拿着开采部与C级去查询. 1.页面中的模态框与分页组件(注意:需要隐藏一个页号,点击分页插件的时候给隐藏的页号赋值,ajax再次请求的时候取页面的页号值) <!-- 隐藏查询条件的页号 --> <input type="hidden" name="currentPage" id="currentPage"> <!-- 模态框 统计详细

SpringBoot集成MyBatis的分页插件PageHelper(回头草)

俗话说:好??不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和SpringBoot的集成,它的使用也非常简单,开发更为高效.因为PageHelper插件是属于MyBatis框架的,所以相信很多哥们儿都已经用

springboot使用Mybatis分页插件

springboot整合mybatis可以使用springboot配置文件的形式,但是配置不了mybatis-config.xml文件(能够配置,但是不扫描),因此数据源和mybatis使用bean的形式处理,实现分页. 一.添加数据源bean,代码如下 package tjresearch; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.http.StatViewServlet;