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

ibator改造之返回数据库注释和数据库分页

    博客分类:
  • java
阅读更多

转载:http://www.iteye.com/topic/821983
欢迎 Javaeye 祸鞋归来。

参考文献:

1、Ibator支持分页的plugin 

2、ibator改进,生成中文注释

插件基于ibator1.2.2(http://svn.apache.org/repos/asf/ibatis/java/ibator) 

个人感觉用ibator Eclipse插件不如直接用这种方式生产代码方便,出错几率小的多,还能log跟踪。

更新:

 

ibator_2010-12-7.jar版本增加了一个插件,ChangeReturnPlugin,功能:

把所有delete、update、insert返回为int类型的方法改为返回布尔值类型

   大部分都用不到返回的行数,多数情况只是关心是否执行成功

在配置文件中加入如下配置即可:

<!-- 修改dao里面返回值,把增删改的返回值由整型改为布尔型 -->
   <ibatorPlugin type="org.apache.ibatis.ibator.plugins.ChangeReturnPlugin" />

和插件SerializablePlugin一样使用,如果没有配置,就不会修改dao类里面的部分方法的返回值,方法还是默认返回int类型。

ibator_2010-12-7.jar对应的源码过些天在上传。

 

强烈建议用一下的java方法生成所需的xml、dao、pojo。不建议用ibator的eclipse插件方式。

自己可以新建一个java工程,里面存放这个.java文件和ibator.jar文件。如果要生成代码到其他工程里面去可以在xml里面配置:

targetProject="../你要生成的目的工程名/src">  记得xml里面的3个targetProject都要修改哦。

 

Java代码 复制代码
  1. package ibator;   
  2.   
  3. import java.io.File;   
  4. import java.util.ArrayList;   
  5. import java.util.List;   
  6.   
  7. import org.apache.ibatis.ibator.api.Ibator;   
  8. import org.apache.ibatis.ibator.config.IbatorConfiguration;   
  9. import org.apache.ibatis.ibator.config.xml.IbatorConfigurationParser;   
  10. import org.apache.ibatis.ibator.internal.DefaultShellCallback;   
  11.   
  12. public class IbatorRunTest {   
  13.   
  14.     public static void main(String... strings) {   
  15.         try {   
  16.             List<String> warnings = new ArrayList<String>();   
  17.             boolean overwrite = true;   
  18.             File configFile = new File(ClassLoader.getSystemResource("ConfigIbatisExample.xml").getFile());   
  19.             IbatorConfigurationParser cp = new IbatorConfigurationParser(   
  20.                     warnings);   
  21.             IbatorConfiguration config = cp   
  22.                     .parseIbatorConfiguration(configFile);   
  23.             DefaultShellCallback callback = new DefaultShellCallback(overwrite);   
  24.             Ibator ibator = new Ibator(config, callback, warnings);   
  25.             ibator.generate(null);   
  26.             for (String warning : warnings) {   
  27.                 System.out.println("warning:" + warning);   
  28.             }   
  29.         } catch (Exception ex) {   
  30.             ex.printStackTrace();   
  31.         }   
  32.     }   
  33.   
  34. }  
package ibator;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.ibator.api.Ibator;
import org.apache.ibatis.ibator.config.IbatorConfiguration;
import org.apache.ibatis.ibator.config.xml.IbatorConfigurationParser;
import org.apache.ibatis.ibator.internal.DefaultShellCallback;

public class IbatorRunTest {

	public static void main(String... strings) {
		try {
			List<String> warnings = new ArrayList<String>();
			boolean overwrite = true;
			File configFile = new File(ClassLoader.getSystemResource("ConfigIbatisExample.xml").getFile());
			IbatorConfigurationParser cp = new IbatorConfigurationParser(
					warnings);
			IbatorConfiguration config = cp
					.parseIbatorConfiguration(configFile);
			DefaultShellCallback callback = new DefaultShellCallback(overwrite);
			Ibator ibator = new Ibator(config, callback, warnings);
			ibator.generate(null);
			for (String warning : warnings) {
				System.out.println("warning:" + warning);
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

}

 

修改日志:

1、增加数据库注释,oracle默认不返回数据库注释,需要设置一个参数

2、当oracle得字段为number没有指定长度时,ibator会设置字段为Big Decimal 

3、去掉不必要的其他注释

4、改进分页的生成方式

5、其他详情见附件源码

 

 

配置文件代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <!DOCTYPE ibatorConfiguration   
  3.   PUBLIC "-//Apache Software Foundation//DTD Apache iBATIS Ibator Configuration 1.0//EN"  
  4.   "http://ibatis.apache.org/dtd/ibator-config_1_0.dtd">   
  5.   
  6. <ibatorConfiguration>   
  7.     <classPathEntry location="E:/jars/ojdbc/ojdbc14_10.2.0.4.jar" />   
  8.     <ibatorContext id="FlatJava5" targetRuntime="Ibatis2Java5">   
  9.         <property name="suppressTypeWarnings" value="true" />   
  10.         <!-- Serializable化 -->   
  11.         <ibatorPlugin type="org.apache.ibatis.ibator.plugins.SerializablePlugin" />   
  12.         <!-- 这个插件添加方法为例(实际上的内部类)来支持不区分大小写像搜索。这个演示了增加功能,通过一个实例类插件,而不是延长上课。 -->   
  13.         <ibatorPlugin type="org.apache.ibatis.ibator.plugins.CaseInsensitiveLikePlugin" />   
  14.         <!-- 分页 -->   
  15.         <ibatorPlugin type="org.apache.ibatis.ibator.plugins.PaginationPlugin">   
  16.             <property name="enablePagination" value="true" />   
  17.             <!-- mysql or oracle -->   
  18.             <property name="databaseType" value="oracle" />   
  19.         </ibatorPlugin>   
  20.         <!-- 重命名example类 -->   
  21.         <ibatorPlugin   
  22.             type="org.apache.ibatis.ibator.plugins.RenameExampleClassPlugin">   
  23.             <property name="searchString" value="Example$" />   
  24.             <property name="replaceString" value="Criteria" />   
  25.         </ibatorPlugin>   
  26.         <!-- 产生sqlmap.xml   
  27.         <ibatorPlugin type="org.apache.ibatis.ibator.plugins.SqlMapConfigPlugin">   
  28.             <property name="targetPackage" value="ibatortest.generated.flat" />   
  29.             <property name="targetProject" value="src" />   
  30.         </ibatorPlugin>   
  31.         -->   
  32.   
  33.         <!-- driverClass="com.mysql.jdbc.Driver" -->   
  34.         <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"  
  35.             connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:ora10g" userId="test"  
  36.             password="test" >   
  37.             <!-- 是否返回数据库注释,MySQL默认是true,oracle默认是false -->   
  38.             <property name="remarksReporting" value="true"/>   
  39.             </jdbcConnection>   
  40.         <javaModelGenerator targetPackage="test.pojo"  
  41.             targetProject="src">   
  42.             <!-- 如果为TRUE,下面的设置了schema,那么包名就是会增加个schema名,   
  43.             如果schema=“aaa”  , test.pojo.aaa.XXXX;   
  44.             <property name="enableSubPackages" value="true" />   
  45.              -->   
  46.              <!-- 继承哪个父类,这个为了有时候日志需要打印整个对象,而采用的apache打印对象的每个属性 -->   
  47.              <property name="rootClass" value="ibator.BaseBean" />   
  48.         </javaModelGenerator>   
  49.   
  50.         <sqlMapGenerator targetPackage="test.sqlmap"  
  51.             targetProject="src">   
  52.             <!--   
  53.             <property name="enableSubPackages" value="true" />   
  54.              -->   
  55.         </sqlMapGenerator>   
  56.   
  57.         <daoGenerator type="SPRING" targetPackage="test.dao" implementationPackage="test.dao.impl"  
  58.             targetProject="src">   
  59.             <!--   
  60.             <property name="enableSubPackages" value="true" />   
  61.              -->   
  62.         </daoGenerator>   
  63.   
  64.         <!--   
  65.         如果数据库里面有多个相同表名在不同的schema下,那么你得加上:   
  66.         schema="XXXX"和<property name="ignoreQualifiersAtRuntime" value="true" />   
  67.         不然ibator会以找到的最后一个为最终对象,这个问题苦恼了我很久,后来才发现   
  68.          -->   
  69.         <table tableName="OTA_APPLETE_INFO" schema="XXX">   
  70.          <!-- 忽略schema,避免在xml中出现schema.表名   
  71.           -->   
  72.          <property name="ignoreQualifiersAtRuntime" value="true" />   
  73.           <!-- 精确到时分秒时,需要设置下:  jdbcType="TIMESTAMP"-->   
  74.           <columnOverride column="UPDATED_DATE" jdbcType="TIMESTAMP"/>   
  75.         </table>   
  76.     </ibatorContext>   
  77. </ibatorConfiguration>  
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ibatorConfiguration
  PUBLIC "-//Apache Software Foundation//DTD Apache iBATIS Ibator Configuration 1.0//EN"
  "http://ibatis.apache.org/dtd/ibator-config_1_0.dtd">

<ibatorConfiguration>
	<classPathEntry location="E:/jars/ojdbc/ojdbc14_10.2.0.4.jar" />
	<ibatorContext id="FlatJava5" targetRuntime="Ibatis2Java5">
		<property name="suppressTypeWarnings" value="true" />
		<!-- Serializable化 -->
		<ibatorPlugin type="org.apache.ibatis.ibator.plugins.SerializablePlugin" />
		<!-- 这个插件添加方法为例(实际上的内部类)来支持不区分大小写像搜索。这个演示了增加功能,通过一个实例类插件,而不是延长上课。 -->
		<ibatorPlugin type="org.apache.ibatis.ibator.plugins.CaseInsensitiveLikePlugin" />
		<!-- 分页 -->
		<ibatorPlugin type="org.apache.ibatis.ibator.plugins.PaginationPlugin">
			<property name="enablePagination" value="true" />
			<!-- mysql or oracle -->
			<property name="databaseType" value="oracle" />
		</ibatorPlugin>
		<!-- 重命名example类 -->
		<ibatorPlugin
			type="org.apache.ibatis.ibator.plugins.RenameExampleClassPlugin">
			<property name="searchString" value="Example$" />
			<property name="replaceString" value="Criteria" />
		</ibatorPlugin>
		<!-- 产生sqlmap.xml
		<ibatorPlugin type="org.apache.ibatis.ibator.plugins.SqlMapConfigPlugin">
			<property name="targetPackage" value="ibatortest.generated.flat" />
			<property name="targetProject" value="src" />
		</ibatorPlugin>
		-->

		<!-- driverClass="com.mysql.jdbc.Driver" -->
		<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
			connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:ora10g" userId="test"
			password="test" >
			<!-- 是否返回数据库注释,MySQL默认是true,oracle默认是false -->
			<property name="remarksReporting" value="true"/>
			</jdbcConnection>
		<javaModelGenerator targetPackage="test.pojo"
			targetProject="src">
			<!-- 如果为TRUE,下面的设置了schema,那么包名就是会增加个schema名,
			如果schema=“aaa”  , test.pojo.aaa.XXXX;
			<property name="enableSubPackages" value="true" />
			 -->
			 <!-- 继承哪个父类,这个为了有时候日志需要打印整个对象,而采用的apache打印对象的每个属性 -->
			 <property name="rootClass" value="ibator.BaseBean" />
		</javaModelGenerator>

		<sqlMapGenerator targetPackage="test.sqlmap"
			targetProject="src">
			<!--
			<property name="enableSubPackages" value="true" />
			 -->
		</sqlMapGenerator>

		<daoGenerator type="SPRING" targetPackage="test.dao" implementationPackage="test.dao.impl"
			targetProject="src">
			<!--
			<property name="enableSubPackages" value="true" />
			 -->
		</daoGenerator>

		<!--
		如果数据库里面有多个相同表名在不同的schema下,那么你得加上:
		schema="XXXX"和<property name="ignoreQualifiersAtRuntime" value="true" />
		不然ibator会以找到的最后一个为最终对象,这个问题苦恼了我很久,后来才发现
		 -->
		<table tableName="OTA_APPLETE_INFO" schema="XXX">
		 <!-- 忽略schema,避免在xml中出现schema.表名
		  -->
		 <property name="ignoreQualifiersAtRuntime" value="true" />
		  <!-- 精确到时分秒时,需要设置下:  jdbcType="TIMESTAMP"-->
		  <columnOverride column="UPDATED_DATE" jdbcType="TIMESTAMP"/>
		</table>
	</ibatorContext>
</ibatorConfiguration>

 

 

Java代码 复制代码
  1. package test.pojo;   
  2.   
  3. import ibator.BaseBean;   
  4. import java.io.Serializable;   
  5. import java.util.Date;   
  6. /**  
  7.  * 2009-07-27  ss       
  8.  * <p>  
  9.  * 每个应用的具体信息  
  10.  */  
  11. public class BaseUsers extends BaseBean implements Serializable {   
  12.     /**  
  13.      * 用户ID  
  14.      */  
  15.     private String userId;   
  16.   
  17.     /**  
  18.      * 组织结构编码  
  19.      */  
  20.     private String groupId;   
  21.   
  22.     /**  
  23.      * 姓名  
  24.      */  
  25.     private String userName;   
  26.   
  27.     /**  
  28.      * 证件号码  
  29.      */  
  30.     private String cardNo;  
package test.pojo;

import ibator.BaseBean;
import java.io.Serializable;
import java.util.Date;
/**
 * 2009-07-27  ss     
 * <p>
 * 每个应用的具体信息
 */
public class BaseUsers extends BaseBean implements Serializable {
    /**
     * 用户ID
     */
    private String userId;

    /**
     * 组织结构编码
     */
    private String groupId;

    /**
     * 姓名
     */
    private String userName;

    /**
     * 证件号码
     */
    private String cardNo;
 

 

 

附件一个为编译后的jar文件,一个是源码+doc。

 

 

分享到:
评论

相关推荐

    ibator优化版,使用数据库的注释

    使用数据库的注释,不用自带的注释 http://blog.csdn.net/tiantangpw/article/details/43489817 运行命令 java -jar ibator.jar -configfile ibatorConfig.xml -overwrite &gt;&gt;ibator.log

    适用mysql分页的ibator

    MySQL是一种广泛使用的开源关系型数据库管理系统...ibator可以极大地提高开发效率,同时,理解并掌握动态SQL和分页查询原理对于提升数据库操作的性能至关重要。在实际应用中,还需要结合业务需求进行适当的调整和优化。

    ibator1.2.2无注释

    ibator1.2.2多了点功能,具体可以百度,重新编译了下,生成注释去掉了

    ibator的eclipse插件

    - **设置生成策略**:定义生成的Java类和XML配置文件的命名规则、是否生成注释、字段映射等。 - **生成代码**:确认设置无误后,点击“Finish”生成代码。 生成的代码通常包括: - **实体类(Entity Class)**:...

    ibator1.2.1

    3. 执行Ibator:运行Ibator,指定数据库连接信息和目标输出目录,Ibator会自动扫描并生成相应的Java代码。 4. 集成到项目:将生成的代码导入到项目中,通过Ibatis的Mapper机制进行数据访问。 四、实际开发中的应用...

    iBATOR-V1.1.0

    而iBATOR则是iBATIS的扩展,它通过简单的配置,可以根据数据库中的表结构自动化地生成与之对应的Java模型类、DAO接口和Mapper XML文件,使得开发过程更加高效。 iBATOR的使用通常涉及到以下几个关键知识点: 1. **...

    eclipse集成的ibator插件

    完成配置后,你可以选择要操作的数据库和表,Ibator会自动生成相应的Java类和MyBatis相关的XML文件。对于每个表,它会生成一个实体类,包含表中的所有字段,以及对应的getter和setter方法。同时,还会生成一个Mapper...

    IBATOR动态生成sql和DAO层

    【IBATOR动态生成SQL和DAO层】是一种高效开发工具,基于Apache的iBatis框架,旨在简化数据库操作的代码编写工作。iBatis是Java语言中的一个持久层框架,它允许开发者将SQL语句直接嵌入到Java代码中,提供灵活的数据...

    ibator1.2.1配置文件

    4. "ibatorConfig.xml":这是Ibator的配置文件,用户需要在此文件中设置数据库连接信息、生成的代码风格、目标目录等参数,Ibator将根据这些配置生成相应的Java和XML文件。 通过以上分析,我们可以看出,Ibator...

    Ibator参考程序

    3. **JavaBean生成**:根据数据库表的结构,Ibator会自动生成对应的JavaBean类,包含getter和setter方法,以及toString、equals和hashCode等常用方法。 4. **Mapper接口与XML配置**:Ibator会生成Mapper接口,其中...

    ibator使用心得

    `ibator`,全称Apache iBATIS Auto Generator,是一个基于Java的代码生成工具,源自iBATIS项目,用于帮助开发者快速生成与数据库交互的Java类和XML映射文件。相较于Hibernate,ibator允许开发者拥有更多的SQL控制权...

    ibator使用指导

    Ibator,全称是"iBatis Auto Generator",是一个强大的代码生成工具,用于简化基于MyBatis框架的数据库模型、映射文件和DAO接口的创建。在MyEclipse 7.5中安装Ibator插件可以极大提高开发效率,避免手动编写重复的...

    ibator 1.2.1

    1. 自动化:ibator可以根据数据库表信息生成对应的Java类和配置文件,减少了手动编码的时间。 2. 定制化:用户可以通过配置模板来定制生成的代码样式,满足不同的项目需求。 3. 扩展性:ibator提供API和扩展机制,...

    IBator的安装使用

    - **导入资源包**:在项目中引入必要的jar包,如`ibator.jar`、`ibatis-2.3.0.677.jar`以及数据库驱动(例如`sqljdbc4.jar`,这里用的是SQL Server数据库驱动)。 - **创建配置文件**:通过Eclipse的“New” -&gt; ...

    ibator-eclipse插件1.2.1 包含优化后jar包

    在开发过程中,对于数据库模型的自动化生成,Ibator是Ibatis提供的一个强大工具。Ibator-Eclipse插件1.2.1版正是这样一个辅助开发的神器,它将Ibator与Eclipse集成,为Java开发者提供了更便捷的代码生成体验。 这个...

    ibator插件+ibatorConfig文件

    【ibator插件+ibatorConfig文件】是用于简化Java开发中的数据库操作的工具,尤其在构建Maven或Gradle项目时,它能自动生成基于Active ...因此,熟悉和掌握ibator及其配置文件的使用是每个Java开发者的必备技能之一。

    ibatis自动生成工具ibator及配置文件示例

    ibator的工作原理是通过读取用户提供的配置文件(通常为`ibatorConfig.xml`),根据配置中的数据库连接信息、表名等参数,自动生成相应的Java源代码和XML配置文件。配置文件中可以指定生成的实体类命名规则、表前缀...

    mybatis根据数据库表自动生成SQL、实体类、mapper文件工具

    在IT行业中,开发人员经常需要处理数据库操作,包括创建与数据库交互的代码,如SQL查询、实体类和映射文件。这些任务繁琐且容易出错,因此自动化工具的出现极大地提高了开发效率。"mybatis根据数据库表自动生成SQL、...

    ibatis:使用ibator自动生成代码和配置文件

    此外,ibator还支持复杂的数据库设计,如多对一、一对多、一对一等关系的处理,它会自动生成关联对象的getter和setter方法,以及对应的SQL查询。 总的来说,ibator是提高MyBatis项目开发效率的重要工具。通过正确地...

    ibator的学习

    这个文件定义了ibator如何工作,包括数据库连接信息、生成的Java模型、Mapper接口和XML配置文件的命名规则等。例如,你可以在这里指定数据库的URL、用户名、密码,以及要生成代码的目标包路径。同时,ibatorConfig....

Global site tag (gtag.js) - Google Analytics