/**
* @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中有配置。联网更新依赖会自动下载。
资源推荐
资源详情
资源评论
收起资源包目录
MyBatis自动生成mapper.xml工具 (375个子文件)
MyBatisPaginationPlugin.class 5KB
MyBatisPaginationPlugin.class 5KB
MyBatisGeneratorTool.class 3KB
MyBatisGeneratorTool.class 3KB
Page.class 2KB
Page.class 2KB
.classpath 1KB
org.eclipse.wst.common.component 703B
org.eclipse.wst.jsdt.ui.superType.container 49B
axure-chrome-extension.crx 31KB
styles.css 54KB
styles.css 48KB
styles.css 44KB
jquery-ui-themes.css 28KB
styles.css 22KB
styles.css 9KB
styles.css 5KB
sitemap.css 5KB
styles.css 4KB
axure_rp_page.css 3KB
default.css 3KB
styles.css 1KB
page_notes.css 557B
reset.css 502B
allow_access.gif 9KB
extensions_menu.gif 9KB
axure_logo.gif 3KB
splitter.gif 1KB
plus.gif 834B
minus.gif 830B
newwindow.gif 112B
note.gif 98B
u188.gif 61B
u94.gif 59B
transparent.gif 43B
主框架示意图.html 64KB
呼入通话记录.html 54KB
列表页面.html 45KB
中继报表.html 24KB
index.html 14KB
start.html 14KB
对话框.html 8KB
chrome.html 5KB
页面设计规范.html 5KB
images.html 1KB
chm_start.html 1KB
expand.html 1KB
images.html 1011B
Other.html 869B
images.html 707B
reload.html 534B
start_c_1.html 170B
aspectjweaver-1.8.2.jar 1.77MB
hsqldb-2.3.2.jar 1.4MB
javaee-api-6.0.jar 957KB
mysql-connector-java-5.1.29.jar 856KB
jackson-mapper-asl-1.9.13.jar 762KB
mybatis-3.2.4.jar 699KB
javassist-3.12.1.GA.jar 629KB
mchange-commons-java-0.2.7.jar 588KB
commons-collections-3.2.1.jar 562KB
postgresql-9.1-901-1.jdbc4.jar 538KB
mybatis-generator-core-1.3.2.jar 504KB
c3p0-0.9.5-pre8.jar 472KB
logback-core-1.1.2.jar 418KB
jstl-1.2.jar 405KB
standard-1.1.2.jar 384KB
cglib-full-2.0.2.jar 301KB
commons-lang-2.5.jar 273KB
logback-classic-1.1.2.jar 264KB
jackson-core-asl-1.9.13.jar 227KB
commons-beanutils-1.8.0.jar 226KB
plexus-utils-2.0.5.jar 218KB
commons-beanutils-core-1.8.3.jar 202KB
plexus-container-default-1.0-alpha-9-stable-1.jar 190KB
commons-io-2.0.1.jar 156KB
json-lib-2.4-jdk15.jar 155KB
maven-core-2.0.6.jar 148KB
jtidy-4aug2000r7-dev.jar 135KB
jsch-0.1.27.jar 119KB
maven-project-2.0.6.jar 113KB
xml-apis-1.0.b2.jar 107KB
commons-pool-1.5.5.jar 98KB
maven-artifact-2.0.6.jar 85KB
ezmorph-1.0.6.jar 84KB
maven-model-2.0.6.jar 84KB
commons-fileupload-1.3.1.jar 67KB
plexus-interpolation-1.13.jar 60KB
maven-artifact-manager-2.0.6.jar 55KB
maven-settings-2.0.6.jar 48KB
mybatis-spring-1.2.2.jar 48KB
wagon-provider-api-1.0-beta-2.jar 45KB
maven-filtering-1.1.jar 42KB
classworlds-1.1.jar 37KB
maven-plugin-descriptor-2.0.6.jar 36KB
maven-profile-2.0.6.jar 34KB
commons-cli-1.0.jar 29KB
maven-resources-plugin-2.6.jar 29KB
slf4j-api-1.7.7.jar 29KB
maven-plugin-registry-2.0.6.jar 28KB
共 375 条
- 1
- 2
- 3
- 4
资源评论
- lmrdabendan12015-11-10非常好 非常棒 解决了我常年困扰的难题
- jollon2016-11-04资源很不错,值得学习
guiyu_2008
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于C语言的系统服务框架.zip
- (源码)基于Spring MVC和MyBatis的选课管理系统.zip
- (源码)基于ArcEngine的GIS数据处理系统.zip
- (源码)基于JavaFX和MySQL的医院挂号管理系统.zip
- (源码)基于IdentityServer4和Finbuckle.MultiTenant的多租户身份认证系统.zip
- (源码)基于Spring Boot和Vue3+ElementPlus的后台管理系统.zip
- (源码)基于C++和Qt框架的dearoot配置管理系统.zip
- (源码)基于 .NET 和 EasyHook 的虚拟文件系统.zip
- (源码)基于Python的金融文档智能分析系统.zip
- (源码)基于Java的医药管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功