`
ht00001126.com
  • 浏览: 2134 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Generator 插件开发

阅读更多

Generator 插件开发:

 

完整实例:http://download.csdn.net/detail/ht_00001/9514922

 

1 继承:org.mybatis.generator.api.PluginAdapter;

public class RepositoryPlugin extends PluginAdapter{}

 

2 对DAO类的修改:

重写:

public List<GeneratedJavaFile> contextGenerateAdditionalJavaFiles(

IntrospectedTable introspectedTable);

 

3 复写创建DAO类

继承:org.mybatis.generator.codegen.AbstractJavaGenerator

public class RepositoryJavaGenerator extends AbstractJavaGenerator{}

重写:

public List<CompilationUnit> getCompilationUnits(){}

新创建DAO类

Interface inter =new Interface(new FullyQualifiedJavaType(String className));

设置类的修饰符

inter.setVisibility(JavaVisibility.PUBLIC);//public 属性

导入包

inter.addImportedType(new FullyQualifiedJavaType(String importName))

inter.addImportedType(String importName)

继承接口

inter.addSuperInterface(new FullyQualifiedJavaType(String fatherName))

实例:

package plugin;

import java.util.ArrayList;
import java.util.List;

import org.mybatis.generator.api.dom.java.CompilationUnit;
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.codegen.AbstractJavaGenerator;

public class RepositoryJavaGenerator extends AbstractJavaGenerator {

	@Override
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public List<CompilationUnit> getCompilationUnits() {
		
		String pack = context.getProperty("repositoryTargetPackage");
		FullyQualifiedJavaType type = new FullyQualifiedJavaType(
			new StringBuffer(pack).append(".").
		  append(introspectedTable.getFullyQualifiedTable().getDomainObjectName()).
		  append("Mapper").toString());
		Interface inter = new Interface(type);
		inter.setVisibility(JavaVisibility.PUBLIC);
		inter.addImportedType(new FullyQualifiedJavaType
                     (introspectedTable.getBaseRecordType()));
		inter.addSuperInterface(new FullyQualifiedJavaType(
		new StringBuffer("BaseRepository<").
		append(introspectedTable.getFullyQualifiedTable().getDomainObjectName()).
		append(">").toString()
				));
		List answer = new ArrayList();
		answer.add(inter);
		return answer;
	}
}
package plugin;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.mybatis.generator.api.GeneratedJavaFile;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;
import org.mybatis.generator.api.dom.java.CompilationUnit;
import org.mybatis.generator.api.dom.xml.Attribute;
import org.mybatis.generator.api.dom.xml.Document;
import org.mybatis.generator.api.dom.xml.XmlElement;

public class RepositoryPlugin extends PluginAdapter {

	@Override
	public boolean validate(List<String> warnings) {
		return true;
	}

	/**
	 * dao类
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	@Override
	public List<GeneratedJavaFile> contextGenerateAdditionalJavaFiles(
			IntrospectedTable introspectedTable) {
		RepositoryJavaGenerator repository = new RepositoryJavaGenerator();
		repository.setContext(context);
		repository.setIntrospectedTable(introspectedTable);
		List units = repository.getCompilationUnits();
		List generatedFile = new ArrayList();
		GeneratedJavaFile gif;
		for (Iterator iterator = units.iterator(); iterator.hasNext();generatedFile.add(gif)) {
			CompilationUnit unit = (CompilationUnit) iterator.next();
			gif = new GeneratedJavaFile(unit,context.getJavaModelGeneratorConfiguration().getTargetProject(),
					context.getProperty("javaFileEncoding"),context.getJavaFormatter());
		}
		return generatedFile;
	}
}

 

4 获取generator.xml 中context的property属性值

context.getProperty("name")

 

5 获取实体类的全类名

introspectedTable.getBaseRecordType()

 

6 获取实体类的类名

introspectedTable.getFullyQualifiedTable().getDomainObjectName()

或者

context.getTableConfigurations().get(0).getDomainObjectName()//0表示第几张表的实体类

 

 

7 对XML修改:

重写:

public boolean sqlMapDocumentGenerated(Document document,

IntrospectedTable introspectedTable);

实例:

package plugin;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.mybatis.generator.api.GeneratedJavaFile;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;
import org.mybatis.generator.api.dom.java.CompilationUnit;
import org.mybatis.generator.api.dom.xml.Attribute;
import org.mybatis.generator.api.dom.xml.Document;
import org.mybatis.generator.api.dom.xml.XmlElement;

public class RepositoryPlugin extends PluginAdapter {

	@Override
	public boolean validate(List<String> warnings) {
		return true;
	}
	/**
	 * xml的命名空间定义
	 */
	@Override
	public boolean sqlMapDocumentGenerated(Document document,
			IntrospectedTable introspectedTable) {
		String pack = context.getProperty("repositoryTargetPackage");
		XmlElement rootElement = document.getRootElement();
		rootElement.getAttributes().clear();
		rootElement.addAttribute(new Attribute("namespace",
				new StringBuffer(pack).append(".").
				append(introspectedTable.getFullyQualifiedTable().getDomainObjectName()).
				append("Mapper").toString() ));
		return super.sqlMapDocumentGenerated(document, introspectedTable);
	}
	
}

 

 

8 获取根节点

XmlElement rootElement = document.getRootElement()

 

9 添加属性

rootElement.addAttribute(new Attribute(String name, String value))

 

10 清除节点的所有属性

rootElement.getAttributes().clear();

 

11 新增节点

rootElement.addElement(XmlElement element)

 

12 新增SQL的文本信息

rootElement.addElement(TextElement element)

 

13 获取所有的表字段

List<IntrospectedColumn> list = introspectedTable.getAllColumns();

 

14 获取表名

introspectedTable.getFullyQualifiedTableNameAtRuntime()

 

15 获取主键

List<IntrospectedColumn> list = introspectedTable.getPrimaryKeyColumns();

 

16 获取表字段的名称

MyBatis3FormattingUtilities.getSelectListPhrase(IntrospectedColumn introspectedColumn)

 

分页查询实例:

package plugin;

import java.util.Iterator;
import java.util.List;

import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;
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;
import org.mybatis.generator.codegen.mybatis3.MyBatis3FormattingUtilities;

/**
 * mySql的分也查询
 * @author huang_tao
 *
 */
public class SelectPagePlugin extends PluginAdapter {

	@Override
	public boolean validate(List<String> warnings) {
		return true;
	}

	@Override
	public boolean sqlMapDocumentGenerated(Document document,
			IntrospectedTable introspectedTable) {
		XmlElement rootElement = document.getRootElement();
		XmlElement answer = new XmlElement("select");
		answer.addAttribute(new Attribute("id","selectByPage"));
		answer.addAttribute(new Attribute("resultMap","BaseResultMap"));
		answer.addAttribute(new Attribute("parameterType", "java.lang.Integer"));
		
		StringBuffer sb = new StringBuffer();
		Iterator<IntrospectedColumn> iter = introspectedTable.getAllColumns().iterator();
		sb.append("select ");
		
		makeXmlElement(answer,sb);
		
		sb.append("  ");
		while(iter.hasNext()){
			sb.append(" "+MyBatis3FormattingUtilities.getSelectListPhrase(iter.next()));
			if(iter.hasNext()){
				sb.append(" ,");
			}
		}
		makeXmlElement(answer,sb);
		
		sb.append("from ");
		makeXmlElement(answer,sb);
		
		sb.append("  ");
		sb.append(" "+introspectedTable.getFullyQualifiedTableNameAtRuntime());
		makeXmlElement(answer,sb);
		
		sb.append("order by ");
		iter = introspectedTable.getPrimaryKeyColumns().iterator();
		while(iter.hasNext()){
			sb.append(" "+MyBatis3FormattingUtilities.getSelectListPhrase(iter.next()));
			if(iter.hasNext()){
				sb.append(" ,");
			}
		}
		makeXmlElement(answer,sb);
		
		sb.append("limit ").append("10 * (#{page,jdbcType=INTEGER}-1)").
			append(" , ").append("10 * #{page,jdbcType=INTEGER}");
		
		makeXmlElement(answer,sb);
		
		rootElement.addElement(answer);
		return super.sqlMapDocumentGenerated(document, introspectedTable);
	}
	
	private void  makeXmlElement(XmlElement answer,StringBuffer sb){
		if(sb.length()>0){
			answer.addElement(new TextElement(sb.toString()));
			sb.setLength(0);
		}
	}
}

 

17 对实体类的修改

重写

  public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass,

          IntrospectedTable introspectedTable)

 添加修饰符

    context.getCommentGenerator().addFieldComment(Field file, 

    IntrospectedTable introspectedTable);

     topLevelClass.addField(Field file);

添加方法

context.getCommentGenerator().addGeneralMethodComment(Method method,

                IntrospectedTable introspectedTable);

topLevelClass.addMethod(Method method);

添加标签

method.addAnnotation("@Override")

设置属性

method.setVisibility(JavaVisibility.PUBLIC);//public 属性

添加返回值

method.setReturnType(FullyQualifiedJavaType returnType)

设置名称

method.setName("toString")

方法添加方法体

method.addBodyLine(String message)

获取所有的属性

topLevelClass.getFields()

设是否为final

method.setFinal(Boolean boolean);   //默认false

设置是否为static

method.setStatic(Boolean boolean);  //默认false

设置方法是否带锁

method.setSynchronized(Boolean boolean); //默认false

属性设置类型

field.setType(new FullyQualifiedJavaType(String));

属性设置值

field.setInitializationString(String message)

 

实例可见 mybatis-generator-core.jar

添加方法:org.mybatis.generator.plugins.ToStringPlugin{};

添加属性:org.mybatis.generator.plugins.SerializablePlugin

0
0
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    mybatis generator eclipse插件的安装

    下面我们将详细介绍如何在Eclipse中安装和使用MyBatis Generator插件。 首先,我们需要获取MBG的插件文件。通常,你可以从官方网站或者第三方资源站点下载到`mybatis-generator-eclipse-plugin`的zip压缩包。下载...

    Mybatis Generator插件的手动安装及插件使用教程

    通过以上步骤,你可以成功地手动安装并使用Mybatis Generator插件,实现数据库表结构到Java代码的自动化转换,从而提高开发效率。在实际应用中,可以根据项目需求调整配置,比如选择生成的代码风格、是否生成注释等...

    SSM整合实例(含mybatis-generator插件即使用说明)

    本实例将详细讲解如何进行SSM整合,并介绍mybatis-generator插件的使用,帮助开发者提高开发效率。 首先,Spring作为核心容器,管理着应用中的对象,提供了依赖注入(DI)和面向切面编程(AOP)的能力。在SSM整合中...

    myeclipse mybatis-generator 插件

    总的来说,MyEclipse MyBatis Generator插件是提高Java开发效率的重要工具,它简化了与数据库交互的代码生成过程。通过UpdateSite进行插件安装,利用generatorConfig.xml配置文件定制生成规则,开发者可以快速地为...

    generator插件完整配置文件

    在Java开发领域,Generator插件是一种非常实用的工具,它能够极大地提高开发效率,通过自动根据数据表生成相应的实体类、接口以及SQL语句,从而减少了手动编写这些基础代码的工作量。这个"generator插件完整配置文件...

    Springboot+mybabits使用Generator插件

    在本文中,我们将深入探讨如何在Spring Boot项目中结合MyBatis框架,使用MyBatis Generator(MBG)插件自动生成数据库模型、Mapper接口和XML配置文件,从而提高开发效率。Spring Boot以其简洁的配置和强大的依赖管理...

    eclipse mybatis generator插件及使用

    Eclipse MyBatis Generator插件是一款强大的自动化代码生成工具,它极大地简化了开发过程中与数据库交互的代码编写工作。MyBatis Generator可以帮助开发者自动生成Java实体类、Mapper接口及XML配置文件,从而节省了...

    mybatis generator插件包

    总的来说,Mybatis Generator插件包是一个便捷的开发工具,适用于使用Eclipse的Java开发人员。通过这个插件,开发者可以自动生成Mybatis项目中的核心代码,包括XML映射文件、Mapper接口和实体类,从而减少手动编写的...

    myeclipse-mybatis-generator插件

    MyEclipse MyBatis Generator插件是一款专门为MyEclipse集成开发环境设计的代码生成工具,极大地提升了开发效率。它基于MyBatis框架,能够自动生成Java实体类、Mapper接口及XML配置文件,使得开发者无需手动编写重复...

    mybatis-generator插件

    总结一下,MyBatis Generator插件是IDEA中用于自动化生成MyBatis相关代码的强大工具,通过XML配置文件来指定生成规则,极大地提高了开发效率。了解并熟练掌握其使用方法,能帮助开发者快速地搭建数据访问层,专注于...

    MyBatis的generator插件(含案例xml)

    MyBatis Generator(MBG)是MyBatis框架的一个强大工具,它允许用户自动生成Java实体类、Mapper接口和XML映射文件,大大减轻了开发人员的手动编码工作,提高了开发效率,减少了出错的可能性。在Java开发中,尤其是...

    mybatis generator Myeclipse插件

    文件名"mybatisgenerator_myeclipse10-sql-oracle"可能表示这是一个适用于Myeclipse 10版本的Mybatis Generator插件,并且重点支持Oracle数据库的配置和使用。"sql"可能代表SQL数据库的通用性,而"oracle"则强调了对...

    myBatis Generator自动创建代码插件

    MyBatis Generator是一款强大的自动化工具,它能够帮助开发者自动生成Java实体类、DAO接口以及Mapping映射文件,极大地提高了开发效率。在SSM(Spring、SpringMVC、MyBatis)框架中,MyBatis Generator作为一款必备...

    Myeclipse8~10安装mybatis-generator插件

    下面将详细介绍如何在Myeclipse 8到10版本中安装并使用Mybatis Generator插件。 首先,了解Mybatis Generator的基本概念是必要的。Mybatis Generator基于XML配置文件,通过读取数据库表信息,可以自动生成与数据库...

    eclipse mybatis.generator.eclipse.site- 插件

    Eclipse MyBatis Generator Eclipse Site 插件是一个用于Eclipse集成开发环境的工具,它极大地简化了MyBatis Generator的使用。MyBatis Generator是一个强大的Java库,它能够自动生成MyBatis框架所需的SQL映射文件、...

    mybatis-generator eclipse插件离线安装包

    通过使用MyBatis Generator Eclipse插件,开发者可以专注于业务逻辑的实现,而无需为数据访问层的代码编写花费太多时间,提高了开发效率和代码质量。它还支持自定义生成模板,可以根据团队的编码规范进行定制,使得...

    Mybatis Generator eclipse 插件

    在Eclipse环境中,我们可以安装Mybatis Generator插件来方便地进行这些操作。下面将详细介绍如何在Eclipse中安装和使用Mybatis Generator插件。 首先,我们需要获取Mybatis Generator的插件文件。通常,这是一个....

    mybatis框架下使用generator插件自动生成domain/mapping/mapper

    总的来说,Mybatis Generator插件是Java开发中的得力助手,它通过自动化代码生成,减轻了开发人员的工作负担,提高了开发效率,同时保证了代码质量。熟练掌握并运用这个工具,无疑会提升你在项目开发中的工作效率。

    mybatis generator插件的手动安装即使用

    总之,MyBatis Generator插件通过简单的配置就能自动生成与数据库表对应的Java代码,大大减少了开发人员的手动编写工作,提高了开发效率。手动安装MBG插件到MyEclipse 10的过程中,关键在于正确放置`features`和`...

    mybatis generator 插件

    MyBatis Generator...综上所述,MyBatis Generator是一个强大且灵活的工具,可以帮助开发者快速生成MyBatis框架所需的代码,提高开发效率。正确配置和使用MBG是提升开发体验的关键,同时也要注意其可能带来的风险。

Global site tag (gtag.js) - Google Analytics