自编译的ibator1.2.2
apache ibatis项目已经终止,新的项目叫Mybatis。
相应的ibator代码生成工具也变了,终止之前最后的那个版本是ibator1.2.1。
浏览mybatis网站发现,有一个未发布的ibator1.2.2版本。
于是svn下载下来编译一番,凑合用用。
经测试eclipse 插件运行会报错(个人能力有限,对eclipse插件编写不熟悉),用ant或者手写代码的方式启动ibator没有问题。
ibator1.2.2中的新功能:
生成文件的变化:
1.selectByExample可以支持distinct
2.Example类增加了一个or方法
3.如果列名是sql关键字可以自动转义
4.select语句 重构,列名放在一个段 <sql id="Base_Column_List">中。
5.重新设计了eaxmple类,以便于extending,Criteria这部分发生了变化,
6.所有的addCriterionfor JDBC* method都进行了null检查
7.可以选择是否生成ibatorgenerated_前缀
配置文件的变化
8.table标签增加delimitAllColumns属性
9.可以为<columnOverrides>标签指定子标签<property>这个属性会传递到插件中去。
10.<table>增加useCompoundPropertyNames属性
11.可以将sql关键字自动转义:<ibatorContext><property name="autoDelimitKeywords" value="true"><property name="beginningDelimiter" value=""e;"><property name="endingDelimiter" value=""e;"> </ibatorContext>
sql关键字在org.apache.ibatis.ibator.internal.db.SqlReservedWords中
其他
12.IBATIS-569 - 插件体系增强
13.增加一个插件可以支持 忽略大小写的like在example类中
14.IntrospectedColumn类可以返回所有的数据库元信息,这样的话可以在CommentGenerators中添加数据库中的备注字段。
15.SqlMap namespace会设置在IntrospectedTable 的属性中,方便插件访问。
16.修改了IbatorRunner,以显示配置文件的错误。
17.EqualsHashCodePlugin now generates far superior methods
另外
自己添加了一个cn/devit/impl/ibator/ClearCommentGenerator1.java,用来替代默认的CommentGenerator。
这个CommentGenerator会在bean dao sqlmap添加更有意义的注释。例如字段名字,dao实现,接口文件名,sqlmap文件名,数据库中字段的注释,从而将这些个文件链接起来。(eclipse里面光标移到代表文件名的字符串上然后点F3)
这个CommentGenerator会在bean dao sqlmap添加更有意义的注释。例如字段名字,dao实现,接口文件名,sqlmap文件名,数据库中字段的注释,从而将这些个文件链接起来。(eclipse里面光标移到代表文件名的字符串上然后点F3)
ant
<target name="ibator-all" description="Generate the files">
<echo message="${basedir}/../devit-dev-util/dist/devit-dev-util.jar"></echo>
<path id="ibator-lib">
<pathelement location="\eclipse-galileo-3.5.2\dropins\ibator-1.2.2\plugins\org.apache.ibatis.ibator.core_1.2.2.201106071209.jar"/>
</path>
<taskdef name="ibator" classname="org.apache.ibatis.ibator.ant.IbatorAntTask"
classpathref="ibator-lib" />
<ibator overwrite="true" configfile="${basedir}/ibator-config-ant.xml" verbose="true" contextids="${contextids}">
<propertyset>
<propertyref name="generated.source.dir" />
</propertyset>
</ibator>
</target>
代码方式
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class IbatorConfigTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void test1() throws Exception{
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("test/ibator-config-ant.xml");
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 string : warnings) {
System.out.println(string);
}
}
}
oracle如果想出comment的话必须在jdbc连接上添加属性:
<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
connectionURL="" userId=""
password="" >
<property name="remarks" value="true"/>
</jdbcConnection>