generator生成分页mysql_Mybatis3分页, 基于Mybatis Generator插件生成分页语句

package com.fxhx.gamelog.common.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.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;

/**

File name : PaginationPlugin.java 

Author : fly 

Date : 2013-7-2 上午11:50:45 

*/

public class PaginationPlugin extends PluginAdapter {

@Override

public boolean modelExampleClassGenerated(TopLevelClass topLevelClass,

IntrospectedTable introspectedTable) {

// add field, getter, setter for limit clause

addLimit(topLevelClass, introspectedTable, "limitStart");

addLimit(topLevelClass, introspectedTable, "limitEnd");

return super.modelExampleClassGenerated(topLevelClass,

introspectedTable);

}

@Override

public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(

XmlElement element, IntrospectedTable introspectedTable) {

//      XmlElement isParameterPresenteElemen = (XmlElement) element

//              .getElements().get(element.getElements().size() - 1);

XmlElement isNotNullElement = new XmlElement("if"); //$NON-NLS-1$

isNotNullElement.addAttribute(new Attribute("test", "limitStart != null and limitStart>=0")); //$NON-NLS-1$ //$NON-NLS-2$

//      isNotNullElement.addAttribute(new Attribute("compareValue", "0")); //$NON-NLS-1$ //$NON-NLS-2$

isNotNullElement.addElement(new TextElement(

"limit #{limitStart} , #{limitEnd}"));

//      isParameterPresenteElemen.addElement(isNotNullElement);

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.setType(PrimitiveTypeWrapper.getIntegerInstance());

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(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);

}

/**

* This plugin is always valid - no properties are required

*/

public boolean validate(List warnings) {

return true;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值