/**
* @Title: MyBatisPaginationPlugin.java
* @Package
* @Description postgresql 数据库表生成XML的插件类
* @author
* @date
* @version V1.0
*/
package com.tinet.MyBatisGeneratorTool;
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.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.Document;
import org.mybatis.generator.api.dom.xml.TextElement;
import org.mybatis.generator.api.dom.xml.XmlElement;
public class MyBatisPaginationPlugin extends PluginAdapter {
@Override
public boolean modelExampleClassGenerated(TopLevelClass topLevelClass,
IntrospectedTable introspectedTable) {
// add field, getter, setter for limit clause
addPage(topLevelClass, introspectedTable, "page");
return super.modelExampleClassGenerated(topLevelClass,
introspectedTable);
}
@Override
public boolean sqlMapDocumentGenerated(Document document,
IntrospectedTable introspectedTable) {
XmlElement parentElement = document.getRootElement();
// 产生分页语句
XmlElement paginationPrefixElement = new XmlElement("sql");
paginationPrefixElement.addAttribute(new Attribute("id", "PostgresqlPaging"));
XmlElement pageStart = new XmlElement("if");
pageStart.addAttribute(new Attribute("test", "page != null"));
pageStart.addElement(new TextElement( "limit #{page.size} offset #{page.start}"));
paginationPrefixElement.addElement(pageStart);
parentElement.addElement(paginationPrefixElement);
// 产生getCount语句
// XmlElement getCountPrefixElement = new XmlElement("select");
// getCountPrefixElement.addAttribute(new Attribute("id", "getCountBy"));
// getCountPrefixElement.addAttribute(new Attribute("parameterType", "java.util.Map"));
// getCountPrefixElement.addAttribute(new Attribute("resultType", "INTEGER"));
// XmlElement getCountStart = new XmlElement("if");
// getCountStart.addAttribute(new Attribute("test", "page != null"));
// getCountStart.addElement(new TextElement( "limit #{page.size}, #{page.start}"));
// getCountPrefixElement.addElement(pageStart);
// parentElement.addElement(getCountPrefixElement);
//
//
// <select id="getCountBy" parameterType="java.util.Map" resultType="INTEGER">
// SELECT
// COUNT(*) AS C
// FROM
// <include refid="tableNameSql" />
// p
// <include refid="varSql" />
// </select>
// 添加缓存
//XmlElement cacheElement = new XmlElement("cache");
//parentElement.addElement(cacheElement);
return super.sqlMapDocumentGenerated(document, introspectedTable);
}
@Override
public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(
XmlElement element, IntrospectedTable introspectedTable) {
XmlElement isNotNullElement = new XmlElement("include"); //$NON-NLS-1$
isNotNullElement.addAttribute(new Attribute("refid",
"PostgresqlPaging"));
element.getElements().add(isNotNullElement);
return super.sqlMapUpdateByExampleWithoutBLOBsElementGenerated(element,
introspectedTable);
}
/**
* @param topLevelClass
* @param introspectedTable
* @param name
*/
private void addPage(TopLevelClass topLevelClass,
IntrospectedTable introspectedTable, String name) {
topLevelClass.addImportedType(new FullyQualifiedJavaType(
"core.entity.Page"));
CommentGenerator commentGenerator = context.getCommentGenerator();
Field field = new Field();
field.setVisibility(JavaVisibility.PROTECTED);
field.setType(new FullyQualifiedJavaType("core.entity.Page"));
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(new FullyQualifiedJavaType(
"core.entity.Page"), name));
method.addBodyLine("this." + name + "=" + name + ";");
commentGenerator.addGeneralMethodComment(method, introspectedTable);
topLevelClass.addMethod(method);
method = new Method();
method.setVisibility(JavaVisibility.PUBLIC);
method.setReturnType(new FullyQualifiedJavaType(
"core.entity.Page"));
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;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
mybatis使用虽然灵活简单,但mapper.xml的配置却很繁琐。如果项目的实体表比较多,手工配置是不现实的。这个工具可以帮助自动后成model,dao,mapper.xml 使开发者从繁琐的mapper.xml映射中解放出来,把更多的精力投入到项目的业务层中去。首先配置好generatorConfig_zongfenji.xml,之后运行MyBatisGeneratorTool. 这是一个完整的带源码的小工具,maven方式管理。所需jar包在pom.xml中有配置。联网更新依赖会自动下载。
资源推荐
资源详情
资源评论

















收起资源包目录





































































































共 375 条
- 1
- 2
- 3
- 4
资源评论

- lmrdabendan12015-11-10非常好 非常棒 解决了我常年困扰的难题
- jollon2016-11-04资源很不错,值得学习

guiyu_2008
- 粉丝: 0
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 教育软件代理协议书.doc
- 醒醒啦-美国的Fintech不是中国的互联网金融!.ppt
- 物联网在机械制造行业中的应用分析与研究.docx
- 电子商务与物流配送的关系.doc
- ERP云计算行业发展趋势专题报告.docx
- Photoshop-CS5快捷键之word2003模式.doc
- SQL-Server-佐丹奴数据服务解决方案案例.doc
- plc与接口技术.ppt
- 全国计算机等级测验一级真题附答案.docx
- 基于互联网+模式的汽修行业创新管理方案.docx
- PLC的自动门控制系统设计方案.doc
- matlab图像处理函数.doc
- 中小学教师计算机考试试题.doc
- 电气传动控制中人工智能的应用.docx
- Web服务动态组合方法研究与设计.doc
- 核心素养导向的下中职计算机基础教育探讨.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
