首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

ibatis abator 配备和生成的文件的作用

2012-11-10 
ibatis abator 配置和生成的文件的作用1、Abator生成Java类文件时,根据注释区分属性和方法是系统生成或用户

ibatis abator 配置和生成的文件的作用

1、Abator生成Java类文件时,根据注释区分属性和方法是系统生成或用户自定义,以此决定保留或者覆写.

2、Abator生成SQLMap的xml文件时,根据元素id是否包含前缀 ibatorgenerated_ 区分元素是系统
????? 生成或用户自定义,以此决定保留或者覆写.。

3、注意ibatorConfig.xm 文件中节点的顺序

4、生成的数据对象

??? Primary Key Class 主键的所有组成字段在一个类中
???
??? Record Class 非主键字段非BLOB字段组成的类,继承于Primary Key Class
???
??? Record With BLOBs Class 所有BLOB字段组成的类,继承于Record Class (如不存在),就会继承Primary Key Class
??????????????????????????? 不支持只包含BLOB字段的表。
???
??? Example Class??? 用于生成动态where条件的类

5、example Class 使用(可以使用逻辑运算的结合律简化where条件)

代码:
TestTableExample example = new TestTableExample();
example.createCriteria().andField1EqualTo(5);

产生条件:

where field1 = 5

代码:

TestTableExample example = new TestTableExample();

example.createCriteria()
??? .andField1EqualTo(5)
??? .andField2IsNull();

example.or(example.createCriteria()
??? .andField3NotEqualTo(9)
??? .andField4IsNotNull());

List field5Values = new ArrayList();
field5Values.add(8);
field5Values.add(11);
field5Values.add(14);
field5Values.add(22);

example.or(example.createCriteria()
??? .andField5In(field5Values));

example.or(example.createCriteria()
??? .andField6Between(3, 7));


产生条件:

where (field1 = 5 and field2 is null)
???? or (field3? 9 and field4 is not null)
???? or (field5 in (8, 11, 14, 22))
???? or (field6 between 3 and 7)
???

6、ibatorConfig.xm 文件分析
<?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>

??? <properties url="file:/home/guo/workspace_google/iBATIS/config/config.properties"/>
???
??? <!--
????? url???? 指定属性文件绝对路径。注意与指定数据库jdbc驱动jar包路径的区别哈。
??????????????????? 可以使用${property}的格式引用属性文件中的属性值。
??? -->
???
??? <classPathEntry location="/home/guo/java/workspace/newbee/lib/ibatis/postgresql-8.3-604.jdbc3.jar" />
???
??? <!--
????? classPathEntry 指定数据库jdbc驱动jar包的绝对路径。
??? -->
???
??? <ibatorContext id="context1" targetRuntime="Ibatis2Java5">
???
??? <!--
????? id???????????????? 这个id可以在使用命令行运行Abator时指定,以单独处理某一个ibatorContext
????? targetRuntime??????? Ibatis2Java5 生成适合JDK5.0的类,另一个选项是 Ibatis2Java2,生成适合Java2的类。
??? -->
???
??????? <ibatorPlugin type="org.apache.ibatis.ibator.plugins.RenameExampleClassPlugin">
??????????? <property name="searchString" value="Example$" />
??????????? <property name="replaceString" value="Criteria" />
??????? </ibatorPlugin>
???????
??????? <!--
????????? ibatorPlugin 继承自IbatorPluginAdapter,包名必须是 org.apache.ibatis.ibator.plugins,具体实现可以参考官方文档
??????????? 必须有替换和被替换字符属性。
??????? -->
???
??????? <jdbcConnection driverconnectionURL="jdbc:postgresql://192.168.1.2:5432/newbee" userId="sa" password="esoon" />
???????
??????? <!--
????????? driverClass??????? 数据库驱动类
????????? connectionURL??????? 数据库连接地址
????????? userId??????????? 用户
????????? password??????????? 密码
??????????
??????????????? 还可以使用以下格式添加数据库的其他连接属性
????????? <property name="" value=""/>
??????? -->
????????
??????? <javaTypeResolver >
????????
????????? <property name="forceBigDecimals" value="false" />
??????????
????????? <!--
????????????????? 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer
????????????????? true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal
??????? -->
??????????
??????? </javaTypeResolver>
???????????
??????? <javaModelGenerator targetPackage="com.newbee.bean" targetProject="newbee/src" />
???????
??????? <!--
????????? targetProject??????? 生成的Java Bean放置在哪个项目的哪个目录下
????????? targetPackage??????? 生成的Java Bean的包名
???????????????? 一个有用的属性
????????? <property name="trimStrings" value="true" />
????????????????? 从数据库返回的值被清理前后的空格
????????? <property name="enableSubPackages" value="false" />
????????????????? 是否在包名后加上scheme名称
??????? -->
???????????
??????? <sqlMapGenerator targetPackage="com.newbee.xml" targetProject="newbee/src" />
???????
??????? <!--
????????? targetProject??????? 生成的 SqlMap.xml 文件放置在哪个项目的哪个目录下
????????? targetPackage??????? 生成的 SqlMap.xml 文件的包名
????????? <property name="enableSubPackages" value="false" />
????????????????? 是否在包名后加上scheme名称
??????? -->
???????????
??????? <daoGenerator targetPackage="com.newbee.dao" targetProject="newbee/src" type="GENERIC-CI" />
???????
??????? <!--
????????? targetProject??????? 生成的 dao类文件放置在哪个项目的哪个目录下
????????? targetPackage??????? 生成的 dao类文件的包名
????????? <property name="enableSubPackages" value="false" />
????????????????? 是否在包名后加上scheme名称
????????? type??????? 生成dao文件的类型,可选择IBATIS、SPRING、GENERIC-CI、GENERIC-SI。默认使用GENERIC-CI
????????????????????? dao类在构造器中获取 SqlMapClient。
?????????????????
??????? -->
???????????
??????? <table tableName="ALLTYPES" domainObjectName="Customer" >
???????
??????? <!--
????????? tableName 数据库表明,据说可以包含SQL通配符%和_。
????????? domainObjectName 数据库表对应的数据对象名称,默认使用表名作为对象名称。
??????? -->
???????
????????? <property name="useActualColumnNames" value="true"/>
??????????
????????? <!--
????????????????? 对象的属性名是否使用字段名称
????????? -->
??????????
????????? <generatedKey column="ID" sqlStatement="DB2" identity="true" />
??????????
????????? <!--
????????????? column??? 自增长或使用sequence生成的字段名
????????????? sqlStatement 生成字段的sql片段或其简称(参考官方文档)
????????????? identity??? true表示后生成,false表示预生成
?????????????
????????????????? 例如:
?????????????????
????????????????? postgresql:<generatedKey
????????????????????? column="lid"
????????????????????? sqlStatement="select nextval('tb000000producttype_lid_seq')"
????????????????????? identity="false" />
?????????????????????
????????????????? sqlserver:<generatedKey
????????????????????? column="lid"
????????????????????? sqlStatement="SqlServer"
????????????????????? identity="true" />
?????????????????????
????????????????? oracle:<generatedKey
????????????????????? column="lid"
????????????????????? sqlStatement="select tb000000producttype_lid_seq.nextval from dual"
????????????????????? identity="false" />
?????????????
????????? -->
??????????
????????? <columnOverride column="DATE_FIELD" property="startDate" />
??????????
????????????? <!--
????????????????? column 字段名
????????????????? property 字段对应的属性名。(默认使用字段名的)
????????????????? javaType 对应的Java类型
????????????????? jdbcType 对应的jdbc类型
?????????????????
????????????????????? 这里的设置覆写javaTypeResolver中的指定
????????????? -->
??????????
????????? <ignoreColumn column="FRED" />
??????????
????????? <!--
????????????? column??? 需要忽略的数据库字段
????????? -->
??????????
????????? <columnRenamingRule searchString="^CUST_" replaceString="" />
??????????
????????? <!--
????????????????? 数据库字段名称到对象属性名称的影射关系。就是一个替换处理。
????????? -->
??????????
??????? </table>
???????
??? </ibatorContext>
???
</ibatorConfiguration>



?

热点排行