`
hy90171
  • 浏览: 59354 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

generator自动生成ibatis代码

 
阅读更多

MBG有一个配置文件generatorConfig.xml。在里面设置连接数据库配置、javaModel、sqlMap、javaClient,table

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
	<!-- 引入配置文件,可以通过${sqljdbcPath}取值 -->
	<properties url="file:///D:/workspaces/mybatisGen/bin/generatorConfig.properties"/>
	<!-- classPathEntry用于设置数据库的JDBC驱动的jar包地址,location可以等于只包含了数据库驱动的jar或zip路经,也可以是一个包含驱动的目录 -->
	<classPathEntry location="c:/ojdbc14.jar" />
	<!-- targetRuntime:代码生成目标,默认是MyBatis3,可以是Ibatis2Java2或者Ibatis2Java5。生成对象兼容MyBatis版本3.0和更高版本,和JSE 5.0和更高版本 -->
	<!-- defaultModelType:用来定义生成模型类型策略。1.conditional 默认策略,为每个表生成一个Model class;2.flat:将所有的表中生成一个Model class,即这个类将保存所有表中字段;3.hierarchical :如果表有一个主键,该模型将生成一个主键类,另一个类,用于容纳任何BLOB列在表中,和另一个类,用于容纳其余的字段。这个是一个适当的继承类之间的关系 -->
	<context id="DB2Tables" targetRuntime="MyBatis3" defaultModelType="conditional">
		<commentGenerator>  
			<!-- 是否去除自动生成的注释,默认false,true:去除;false:不去除 -->  
			<property name="suppressAllComments" value="true" />
			<!-- 指定在生成的注释是否将包括时间戳,默认是false -->
			<property name="suppressDate" value="true" />
		</commentGenerator>
		<!-- 数据库连接的信息:驱动类、连接地址、用户名、密码 -->
		<jdbcConnection
			driverClass="oracle.jdbc.driver.OracleDriver"
			connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:ZFGJJ" 
			userId="hr"
			password="hr">
		</jdbcConnection>
		<!-- 解决数字转换问题 -->
		<javaTypeResolver>
			<!-- 只有一个属于forceBigDecimals,默认false。如果字段精确超过0,生成BigDecimal 如果字段精确是0,总长度10-18生成Long; 如果字段精确是0,总长5-9生成Integer; 如果字段精确是0,总长小于5生成Short; 如果forceBigDecimals为true,统一生成BigDecimal -->
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>
		<!-- Model生成配置 targetPackage:生成包路径,自动生成目录。targetProject:项目路经,可以绝对路径或者相对路径。 -->
		<javaModelGenerator targetPackage="test.model" targetProject="D:\Workspace\mylearn\mybatis\">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="true" />
			<!-- 从数据库返回的值被清理前后的空格  -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		<!-- sqlMap配置 -->
		<sqlMapGenerator targetPackage="test.sqlmap" targetProject="D:\Workspace\mylearn\mybatis\">
			<property name="enableSubPackages" value="true" />
		</sqlMapGenerator>
		<!-- DAO接口的生成 -->
		<javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="D:\Workspace\mylearn\mybatis\">
			<property name="enableSubPackages" value="true" />
		</javaClientGenerator>
		<!-- tableName:用于自动生成代码的数据库表;domainObjectName:对应于数据库表的javaBean类名,如果未指定自动基于表名生成 -->
		<!-- table其他属性:enableCountByExample="false";enableUpdateByExample="false";enableDeleteByExample="false";enableSelectByExample="false";selectByExampleQueryId="false";schema即为数据库名, tableName为对应的数据库表, domainObjectName是要生成的实体类 -->
		<table schema="hr" tableName="countries" domainObjectName="Customer">
			<!-- 忽略字段 -->
			<ignoreColumn column="columnName" />

			<!-- 无论字段是什么类型,生成的类属性都是varchar -->
			<columnOverride column="columnName" jdbcType="VARCHAR" />
                        <!-- 修改数据库列名映射的javabean属性名 -->
			<columnOverride column="oldColumnName" property="propertyName" />

			<!-- 主键生成 如果用了这个 generatedKey ,MBG将在sqlmpper.xml里生成一个 selectKey元素在用在<insert>元素里 。 -->
			<generatedKey column="columnName" sqlStatement="JDBC" identity="true" />
			<generatedKey column="ID" sqlStatement="MySql" identity="true" />

			<!-- javabean继承的父类 -->
			<property name="rootClass" value="com.xxx.commons.entity.IdEntity"/>

			<property name="useActualColumnNames" value="true"/>
		</table>
	</context>
</generatorConfiguration>
 

 

<javaModelGenerator>元素用于定义Java模型生成的属性
支持的属性:
constructorBased:默认值是false

此属性用于选择是否MyBatis生成器将生成一个类的构造函数,它接受一个值类中的每个字段。同时,SQL结果地图将建成投入使用构造函数而不是“setter”为每个字段。这个属性是只适用于MyBatis3和将被忽略了iBATIS2。这个属性可以被相应的属性在< table >元素。

immutable:默认为false

不可变,此属性用于选择是否MyBatis生成器将产生不可变模型类——这意味着类不会有“setter”方法和构造函数会接受类中每个字段的值。

trimStrings:默认值是false。 
此属性用于选择是否MyBatis生成器添加代码来修剪的白色空间从字符字段从数据库返回的。这可以是很有用的,如果您的数据库将数据存储在字符字段而不是VARCHAR字段。当真正的,MyBatis生成器将插入代码来削减字符字段。

 

<javaClientGenerator>元素是用来定义Java客户机代码生成器的属性
Java客户机生成器用来建立Java接口和类,以便可以方便地使用生成的Java模型和XML映射文件。
对于iBATIS2目标环境,这些生成的对象采用的形式DAO接口和实现类。
对于MyBatis,生成的对象采用的形式mapper接口。
type属性:
如果targetRuntime为MyBatis3
XMLMAPPER:生成的对象将Java接口MyBatis 3。xmapper基础设施接口将会依赖生成的XML映射器文件。一般都是使用这个XMLMAPPER

<table>元素用于选择数据库中的一个表。选择的表将导致生成以下对象为每个表

tableName:必须配置 ,指定表的名称
domainObjectName:生成javabean对象的基本名称。如果未指定,MBG将自动基于表名生成。这个名字(无论是在这里指定,或自动生成)将被用来作为域类名和DAO类的名字。

enableInsert:是否生成插入语句。默认是true
enableSelectByPrimaryKey:是否通过主键生成选择语句。不管是否有这种设置,如果该表没有一个主键将不会生成。
enableUpdateByPrimaryKey:是否通过主键生成更新语句。如果该表没有主键,不管是否设置该属性,语句将不会生成。
enableDeleteByPrimaryKey:是否通过主键生成删除语句。如果该表没有主键,不管这种设置该属性,语句将不会生成。
enableDeleteByExample:是否通过example对象生成删除语句。这个声明使得许多不同的动态删除在运行时生成。
enableCountByExample:是否通过example对象生成计算行数语句。该语句将返回一个表中的行数相匹配的example。
enableUpdateByExample:是否通过example对象生成更新语句。该语句将更新一个表中相匹配的记录。

selectByPrimaryKeyQueryId:这个值将被添加到选择列表中选择通过主键的声明在本表格:“' <值>作为QUERYID”。这可以用于识别查询在DBA在运行时跟踪工具。如果你使用这样的价值,你应该指定一个唯一的id为每个不同的查询生成MBG。
selectByExampleQueryId:这个值将被添加到选择列表中选择通过例子的声明在本表格:“' <值>作为QUERYID”。这可以用于识别查询在DBA在运行时跟踪工具。如果你使用这样的价值,你应该指定一个唯一的id为每个不同的查询生成MBG。
enableSelectByExample:是否应该生成通过example的选择语句。这个声明使得许多不同的动态查询是在运行时生成。

 

MBG工具有5种方式运行,1、命令行方式,2、ant方式,3、Maven方式,4、基于xml配置的java方式,5、基于java配置的java方式。

 1、运行cmd->java - jar jar包的文件路径  -configfile  generator.xml的文件路径  -overwrite 命令。

如下: 

 

java -jar E:\Websoft\mybaits\mybatis-generator-core-1.3.2\lib\mybatis-generator-core-1.3.2.jar -configfile E:\WebWorkSpace\workspace_js\downAttachdemo\src\com\mochasoft\down\generator.xml -overwrite  
 成功时输出:MyBatis Generator finished successfully.

 

2、 Java生成

 

  List<String> warnings = new ArrayList<String>();  
  boolean overwrite = true;//是否覆盖原来的文件
  File configFile = new File("generatorConfig.xml");  
  ConfigurationParser cp = new ConfigurationParser(warnings);  
  Configuration config = cp.parseConfiguration(configFile);  
  DefaultShellCallback callback = new DefaultShellCallback(overwrite);  
  MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);  
  myBatisGenerator.generate(null);  
 3、ant

 

  1. <?xml version="1.0"?>  
  2.   
  3. <project default="genfiles" basedir=".">  
  4.     <path id="build">  
  5.         <fileset dir="${basedir}\web\WEB-INF\lib">  
  6.             <include name="*.jar" />  
  7.         </fileset>  
  8.     </path>  
  9.   
  10.     <property name="generated.source.dir" value="${basedir}" />  
  11.   
  12.     <target name="genfiles" description="Generate the files">  
  13.         <taskdef name="mbgenerator" classname="org.mybatis.generator.ant.GeneratorAntTask">  
  14.             <classpath refid="build" />  
  15.         </taskdef>  
  16.         <!--configfile:填你MBG文件名  -->  
  17.         <mbgenerator overwrite="true" configfile="generatorConfig.xml" verbose="false">  
  18.             <propertyset>  
  19.                 <propertyref name="generated.source.dir" />  
  20.             </propertyset>  
  21.         </mbgenerator>  
  22.     </target>  
  23. </project>  

 

分享到:
评论

相关推荐

    ibatis代码自动生成

    - Lombok:虽然不直接生成Ibatis代码,但可以用于自动管理Java对象的getter、setter、equals、hashCode和toString方法,进一步减少手动编码。 4. 代码生成步骤: - 配置:在项目中引入相应的生成器依赖,然后配置...

    自动生成ibatis 实体类文件

    标题“自动生成iBatis 实体类文件”表明我们要讨论的是如何利用MBG来自动化创建与数据库表对应的企业级Java实体类,从而提高开发效率并减少手动编码的错误。 描述中的“只需要修改数据库名称和表名即可,能更加有效...

    自动生成ibatis

    标题 "自动生成ibatis" 指的是使用特定工具或技术来自动化创建iBATIS(一个SQL映射框架)的相关配置和代码,从而提高开发效率。这个过程通常涉及到解析数据库结构,生成对应的Java实体类、Mapper接口和XML映射文件。...

    自动生成代码.rar

    Mybatis和Ibatis通过generator自动生成代码,亲测可用 Mybatis和Ibatis通过generator自动生成代码,亲测可用 Mybatis和Ibatis通过generator自动生成代码,亲测可用

    ibatis sqlserver代码自动生成

    本文将围绕"Ibatis SQLServer代码自动生成"这一主题,详细讲解如何利用工具或方法自动生成与SQLServer配合的Ibatis代码,以便提高开发效率。 首先,Ibatis允许我们定义SQL语句、存储过程和高级映射,将数据库访问...

    ibatis自动生成工具

    Ibatis的自动生成工具,如MyBatis Generator(MBG),是一个用于生成Java源代码的实用程序,这些源代码能够与数据库进行交互。它能够根据数据库表结构自动创建对应的Java实体类、Mapper接口和XML配置文件,从而减轻...

    自定义Ibatis生成器

    Ibatis生成器(也称为MyBatis Generator)允许用户通过配置文件定义规则,然后根据数据库表结构自动生成相应的Java类、Mapper接口和XML映射文件。 **自定义Ibatis生成器的核心知识点:** 1. **MyBatis框架**:...

    A code generator for iBATIS

    标题 "A code generator for iBATIS" 指的是一款为iBATIS框架自动生成代码的工具。iBATIS是一个开源的Java库,它允许程序员将SQL语句直接嵌入到Java代码中,实现了数据库访问层(DAO)的简化。这款代码生成器能够...

    ibatis-generator.zip

    例如,对于分页查询,Ibatis Generator会自动生成如下代码: ```xml SELECT * FROM your_table_name != null and example.limit != null"&gt; LIMIT #{example.start}, #{example.limit} WHERE ... ``` 这里...

    ibatis代码生成

    标题 "iBatis 代码生成" 指的是利用特定工具或方法自动生成 iBatis 框架相关的代码,这通常包括 SQL 映射文件、DAO 接口以及对应的实现类等。iBatis 是一个优秀的 Java ORM(对象关系映射)框架,它允许开发者将 SQL...

    rapid-generator-v3.9 代码生成器独立版

    总的来说,Rapid-Generator v3.9 是Java开发者的得力助手,通过自动化代码生成,减少了手动编写重复代码的时间,提升了开发速度和代码质量。无论你是初学者还是经验丰富的开发者,它都能帮助你在项目开发中更加...

    ibatis2代码生成工具(生成实体Bean,Dao,SqlMap)

    6. **代码生成器(Code Generator)**:iBatis提供了代码生成工具ibator,它可以自动生成基于数据库表的Bean、Dao和SqlMap文件,极大地提高了开发效率。ibator可以根据配置文件自动读取数据库中的表结构,然后生成...

    Generator代码生成插件

    该插件的优势在于它能够从数据库表的注释中智能提取中文信息,自动生成代码,并且在生成过程中保留了中文注释,这样既保证了代码的可读性,也便于团队协作时的理解和沟通。此外,它还支持主流的持久层框架,如...

    strut2+spring+ibatis 的ation层,service层,dao层自动生成,简单易用

    在本项目中,自动生成的Service层代码可以包含对业务逻辑的封装,使得业务处理更加模块化,便于维护和测试。 iBatis,作为一个轻量级的持久层框架,它将SQL语句与Java代码分离,提供了一种灵活的映射机制。通过XML...

    Ibatis/mybatis代码生成工具

    为了进一步提高开发效率,开发者们设计了一系列的代码生成工具,如"Ibatis Helper"和"generator"等,它们能够自动生成基于Ibatis或Mybatis的CRUD(Create, Read, Update, Delete)代码,从而减少手动编写SQL和实体类...

    IBatis_Generator_Eclipse_1.2.1.zip

    ibatis ibator eclipes插件 代码生成器 代码自动生成工具 下载后将features和plugins两个文件夹下的文件拷贝到eclipes安装路径下对应的features和plugins两个文件夹下即可

    MyBatis Generator 自动成成文件项目源码

    先安装 eclipse插件安装地址:http://mybatis.googlecode.com/svn/sub-projects/generator/trunk/eclipse/UpdateSite/ 然后再下载本项目,如果需要离线插件,请到笔者资源库查找 ...会自动生成到该项目中

    MyEclipse上自动生成dao和实体的插件——ibatis

    通过简单的配置,Ibator可以根据数据库表的信息自动生成相应的Java代码,包括Mapper接口、Mapper XML文件、DAO实现类以及实体类等,从而减轻开发者的负担。 首先,安装Ibator插件。下载名为"IbatorForEclipse1.2.1...

    generator, A code generator for MyBatis and iBATIS..zip

    MyBatis Generator(MBG)是一个强大的代码生成器,它为MyBatis和iBATIS提供了自动生成Java源代码和XML映射文件的能力。这个工具极大地简化了开发过程,减少了手动编写重复的 CRUD(创建、读取、更新、删除)操作...

Global site tag (gtag.js) - Google Analytics