声明:本文感谢satellite同学。
====================================
先看Generator,另外generator启动方式还有命令行 和 ant 方式等。
package mybatis.generator;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
public class Generator {
public static void main(String[] args) {
List<String> warnings = new ArrayList<String>();
ConfigurationParser cp = new ConfigurationParser(warnings);
boolean overwrite = true;
//staticTableConfig.xml,dynamicTableConfig.xml
File configFile = new File(
"E:/javaspace/svnspace/WCM5.0/PublishServer/tools/generator/dynamicTableConfig.xml");
try {
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
callback, warnings);
myBatisGenerator.generate(null);
} catch (Exception e) {
e.printStackTrace();
}
}
}
接下来看Plugin,Plugin用于生成的Java代码改造 和 生成的sql改造,具体请参见Mybatis 文档。
参考链接:
http://www.mybatis.org/
http://www.mybatis.org/java.html
http://code.google.com/p/mybatis
package mybatis.generator;
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.Interface;
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.Element;
import org.mybatis.generator.api.dom.xml.TextElement;
import org.mybatis.generator.api.dom.xml.XmlElement;
public class MyPlugin extends PluginAdapter {
@Override
public boolean validate(List<String> arg0) {
return true;
}
@Override
public boolean sqlMapSelectByPrimaryKeyElementGenerated(XmlElement element,
IntrospectedTable introspectedTable) {
element.getAttributes().remove(2);
element.addAttribute(new Attribute("parameterType", introspectedTable
.getBaseRecordType()));
return super.sqlMapSelectByPrimaryKeyElementGenerated(element,
introspectedTable);
}
@Override
public boolean sqlMapDeleteByPrimaryKeyElementGenerated(XmlElement element,
IntrospectedTable introspectedTable) {
element.getAttributes().remove(1);
element.addAttribute(new Attribute("parameterType", introspectedTable
.getBaseRecordType()));
return super.sqlMapDeleteByPrimaryKeyElementGenerated(element,
introspectedTable);
}
@Override
public boolean clientDeleteByPrimaryKeyMethodGenerated(Method method,
Interface interfaze, IntrospectedTable introspectedTable) {
method.getParameters().remove(0);
String type = introspectedTable.getBaseRecordType();
method.addParameter(new Parameter(new FullyQualifiedJavaType(type),
type.substring(type.lastIndexOf(".") + 1).toLowerCase()));
return super.clientDeleteByPrimaryKeyMethodGenerated(method, interfaze,
introspectedTable);
}
@Override
public boolean clientSelectByPrimaryKeyMethodGenerated(Method method,
Interface interfaze, IntrospectedTable introspectedTable) {
method.getParameters().remove(0);
String type = introspectedTable.getBaseRecordType();
method.addParameter(new Parameter(new FullyQualifiedJavaType(type),
type.substring(type.lastIndexOf(".") + 1).toLowerCase()));
return super.clientSelectByPrimaryKeyMethodGenerated(method, interfaze,
introspectedTable);
}
@Override
public boolean sqlMapUpdateByExampleSelectiveElementGenerated(
XmlElement element, IntrospectedTable introspectedTable) {
element.getElements().remove(0);
StringBuilder sb = new StringBuilder();
sb.append("update ");
sb.append(introspectedTable
.getAliasedFullyQualifiedTableNameAtRuntime().replace(
"${tablesite}", "${record.tablesite}"));
element.addElement(0, new TextElement(sb.toString()));
return super.sqlMapUpdateByExampleSelectiveElementGenerated(element,
introspectedTable);
}
@Override
public boolean sqlMapUpdateByExampleWithoutBLOBsElementGenerated(
XmlElement element, IntrospectedTable introspectedTable) {
element.getElements().remove(0);
StringBuilder sb = new StringBuilder();
sb.append("update ");
sb.append(introspectedTable
.getAliasedFullyQualifiedTableNameAtRuntime().replace(
"${tablesite}", "${record.tablesite}"));
element.addElement(0, new TextElement(sb.toString()));
return super.sqlMapUpdateByExampleWithoutBLOBsElementGenerated(element,
introspectedTable);
}
@Override
public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass,
IntrospectedTable introspectedTable) {
addTableSite(topLevelClass, introspectedTable, "tablesite");
return super.modelBaseRecordClassGenerated(topLevelClass,
introspectedTable);
}
@Override
public boolean modelExampleClassGenerated(TopLevelClass topLevelClass,
IntrospectedTable introspectedTable) {
addTableSite(topLevelClass, introspectedTable, "tablesite");
return super.modelExampleClassGenerated(topLevelClass,
introspectedTable);
}
private void addTableSite(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);
}
@Override
public boolean sqlMapBaseColumnListElementGenerated(XmlElement element,
IntrospectedTable introspectedTable) {
List<Element> elist = element.getElements();
int size = elist.size();
Element e = elist.get(size - 1);
String str = e.getFormattedContent(0);
e = new TextElement(str + ", ${tablesite} AS tablesite");
elist.remove(size - 1);
elist.add(size - 1, e);
return super.sqlMapBaseColumnListElementGenerated(element,
introspectedTable);
}
@Override
public boolean sqlMapResultMapWithoutBLOBsElementGenerated(
XmlElement element, IntrospectedTable introspectedTable) {
List<Element> elist = element.getElements();
XmlElement xe = new XmlElement("result");
xe.addAttribute(new Attribute("column", "tablesite"));
xe.addAttribute(new Attribute("property", "tablesite"));
xe.addAttribute(new Attribute("jdbcType", "INTEGER"));
elist.add(xe);
return super.sqlMapResultMapWithoutBLOBsElementGenerated(element,
introspectedTable);
}
@Override
public boolean sqlMapResultMapWithBLOBsElementGenerated(XmlElement element,
IntrospectedTable introspectedTable) {
List<Element> elist = element.getElements();
XmlElement xe = new XmlElement("result");
xe.addAttribute(new Attribute("column", "tablesite"));
xe.addAttribute(new Attribute("property", "tablesite"));
xe.addAttribute(new Attribute("jdbcType", "INTEGER"));
elist.add(xe);
return super.sqlMapResultMapWithoutBLOBsElementGenerated(element,
introspectedTable);
}
}
另外配置文件,请参见附件,包括静态表 和 动态表两种。
分享到:
相关推荐
MyBatis Generator 使用手册 MyBatis Generator 是 MyBatis 的代码生成工具,旨在通过反射数据库表结构生成对应的Java代码,简化开发过程,提高开发效率。本手册将指导用户如何使用 MyBatis Generator 生成代码,...
### Mybatis Generator使用说明 #### 一、简介 Mybatis Generator 是一款强大的代码生成工具,它可以根据数据库表结构自动生成相应的 Java 实体类、Mapper 接口、XML 映射文件等,极大地提高了开发效率,减少了...
4. **DOM4J库**:dom4j-1.6.1.jar是一个用于处理XML文档的Java库,MyBatis Generator使用它来解析和生成XML配置文件。 5. **Jackson库**:如果你需要JSON支持,可能还需要包括jackson-databind.jar。Jackson是一个...
下面将详细介绍如何使用MyBatis Generator以及相关知识点。 **一、MyBatis Generator介绍** MyBatis Generator是MyBatis框架的一个插件,它可以根据数据库表信息自动创建Mapper接口、Mapper XML文件、实体类和DAO...
在【标题】"IDEA中mybatis generator使用.docx"中,主要涉及的是如何在项目中配置和使用MyBatis Generator。首先,我们需要在项目的`pom.xml`文件中添加MBG的插件依赖,这部分已经在【描述】中给出: ```xml ...
Mybatis Generator是一款强大的工具,它为开发者自动化生成Mybatis的Mapper接口、XML映射文件以及实体类,大大减轻了在使用Mybatis时手动编写这些文件的工作负担。在Java开发环境中,ORM(Object-Relational Mapping)...
文件名"mybatisgenerator_myeclipse10-sql-oracle"可能表示这是一个适用于Myeclipse 10版本的Mybatis Generator插件,并且重点支持Oracle数据库的配置和使用。"sql"可能代表SQL数据库的通用性,而"oracle"则强调了对...
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, null); myBatisGenerator.generate(null, generatedJavaFiles, generatedXmlFiles); } } ``` 运行此Java类,MBG将根据配置文件生成...
接下来将详细介绍MyBatis Generator的使用方法。 首先,为了在项目中使用MyBatis Generator,你需要添加相应的依赖包到你的项目中。通过Maven添加依赖的方式,可以在项目的pom.xml文件中加入以下配置: ```xml ...
下面我们将详细介绍如何在Eclipse中安装和使用MyBatis Generator插件。 首先,我们需要获取MBG的插件文件。通常,你可以从官方网站或者第三方资源站点下载到`mybatis-generator-eclipse-plugin`的zip压缩包。下载...
mybatis generator 是根据已创建的数据库数据表生成相映的 entity ,dao ,daoImpl ,sqlmap。 标签:mybatis
3. **运行MBG**:在Java代码中,通过调用`org.mybatis.generator.api.MyBatisGenerator`类的静态方法来执行生成过程。也可以通过命令行执行MBG,前提是配置文件和JAR文件在同一目录下。 4. **生成的代码**:MBG会...
MyBatis Generator 使用方法教程(生成带注释的实体类) MyBatis Generator 是一个强大的工具,能够根据数据库表自动生成 Java 实体类、DAO、Mapper.xml 等文件,从而提高开发效率和减少开发时间。在本教程中,我们...
Eclipse MyBatis Generator插件是一款强大的自动化代码生成工具,它极大地简化了开发过程中与数据库交互的代码编写工作。MyBatis Generator可以帮助开发者自动生成Java实体类、Mapper接口及XML配置文件,从而节省了...
### MyBatis Generator 使用详解 #### 一、概述 MyBatis Generator 是一个强大的代码生成工具,能够根据数据库表结构自动生成对应的 DAO 接口、Mapper 文件以及实体类(POJO),大大减轻了开发人员的手动编码工作...
赠送jar包:mybatis-generator-core-1.3.7.jar; 赠送原API文档:mybatis-generator-core-1.3.7-javadoc.jar; 赠送源代码:mybatis-generator-core-1.3.7-sources.jar; 赠送Maven依赖信息文件:mybatis-generator-...
eclipse 插件,使用MyBatis Generator 可自动生成数据库对应的bean(有中文注释),mapper.xml和mapper dao 接口文件,可直接使用查询数据库,此插件在eclipse mars.2 版本下亲测可用,
mybatis-generator版本:mybatis-generator-core-1.3.7.jar 关于逆向工程自动生成dao层代码的功能,网上很多介绍的都是mysql版本的,而且介绍的都是在开发环境idea或eclipse中怎么使用,这里整理的是PostgerSQL版本...
1、这是Eclipse MyBatis generator 1.3.7插件的核心包 2、首先到Eclipse中下载 MyBatis Generator 1.3.7插件,下载完按步骤进行... 6、此jar包也适用于MyBatis generator 1.3.6版本 替换步骤同上 (亲测绝对可以使用)
MybatisGenerator本身是没有提供查询指定字段的,例如数据库有5个字段,我想查询其中3个...经过研究MybatisGenerator实现原理,在保证原有功能的基础上,实现了生成查询指定字段的相关方法,下载即可使用。eclipse!