写完了一个简单的guid例子,开始建表,准备做登录,session控制。结果建用户表的时候,突然想试试用powerdesigner的OOM直接生成javabean,弄了半天name和code,中英文,大小写问题以后。搜搜,发现人说用pdmreader可以直接生成ibatis的配置sqlmap,dao和javabean。最后证实,这是忽悠人的。。。于是想hibernate不是有成熟的javabean生成插件,ibatis可能还真有,于是还真发现了另一个可以生成ibatis的sqlmap配置文件,javabean,和dao及实现类的插件Abator,适合ibatis用,挺方便的。
结论是:生成javabean,还是别用powerdesigner的OOM,用eclipse插件吧。
可惜这个插件有点烦,得改点源码,由于我用的是UTF-8格式文件,在取中文注释的时候烦死了,老是部分乱码,后来才发现不是转码的问题,是写文件的方式不对,不能用FileWriter,用FileOutputStream然后
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file.getPath()),”UTF-8″);
这样才能生成正常的UTF-8格式的文件。
去掉配置文件table节点的schema,这样生成的sqlMap文件就不加用户名前缀了。
附件(后缀为mp3,改成jar,替换插件下jar即可):
去掉原有生成的多余注释,用”__”开头代替原有的“AbatorGenerated_”开头;
增加javabean生成字段的中文注释,直接从数据库获取,需要配置文件jdbcConnection增加配置<property name=”remarksReporting” value=”true”/>;
修正Abator.java生成UTF-8文件中文乱码问题;
去掉生成的sqlMap文件加的sqlMap后缀。
其实代码很简单,可以直接下源代码,在你Abator新增工程目录下修改源代码,然后替换jar下文件,实现定制化。
2011-10-19更新
比较了下Mybatis和ibatis,最后还是用ibatis,主要是已经弄了老半天ibatis,Spring也没提供Mybatis的整合包,Mybatis自己提供了,并且有自动代码生成工具,但是也不自动生成service和daoimpl,而我已经把Abator改造成支持生成Spring方式的Service和ServiceImpl,ibatis自己改造也能实现分页和批处理。
除了插件生成代码的方式,Abator还试了下面2种生成代码的方式:
1. Abator如果下载了源代码,可以通过修改AbatorRunner.java的jar文件入口方法,直接执行该文件 java application,就可以生成文件了。修改方法如下:
Map arguments = parseCommandLine(args);
if (!arguments.containsKey(CONFIG_FILE)) {
writeLine(Messages.getString(“RuntimeError.0″)); //$NON-NLS-1$
return;
}
替换为
Map arguments = new HashMap();
arguments.put(CONFIG_FILE,”E:\\workspace\\ibatisTest\\abatorConfig.xml”);
2. Abator还支持Ant的方式生成文件,build.xml配置如下:
<project default=”genfiles” basedir=”.”>
<property name=”generated.source.dir” value=”${basedir}” />
<target name=”genfiles” description=”Generate the files”>
<taskdef name=”abator” classname=”org.apache.ibatis.abator.ant.AbatorAntTask” classpath=”abator.jar” />
<abator overwrite=”false” configfile=”abatorConfig.xml” verbose=”false”>
<propertyset>
<propertyref name=”generated.source.dir” />
</propertyset>
</abator>
</target>
</project>
Abator插件,这次修改的内容:
用”__”开头代替,改成用”_”开头;
resultMap还是返回用”_”开头,防止重新生成;
支持生成业务逻辑层Service和ServiceImpl,目前只修改了SPRING下的,需要abatorConfig.xml增加如下配置:
<serviceGenerator daoPackage=”com.lingran.dao” targetPackage=”com.lingran.service.db” targetProject=”E:\workspace\MyWorld\src” type=”SPRING”/>
与daoGenerator同层次,daoPackage为上面daoGenerator的targetPackage路径;
结论是:生成javabean,还是别用powerdesigner的OOM,用eclipse插件吧。
可惜这个插件有点烦,得改点源码,由于我用的是UTF-8格式文件,在取中文注释的时候烦死了,老是部分乱码,后来才发现不是转码的问题,是写文件的方式不对,不能用FileWriter,用FileOutputStream然后
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file.getPath()),”UTF-8″);
这样才能生成正常的UTF-8格式的文件。
去掉配置文件table节点的schema,这样生成的sqlMap文件就不加用户名前缀了。
附件(后缀为mp3,改成jar,替换插件下jar即可):
去掉原有生成的多余注释,用”__”开头代替原有的“AbatorGenerated_”开头;
增加javabean生成字段的中文注释,直接从数据库获取,需要配置文件jdbcConnection增加配置<property name=”remarksReporting” value=”true”/>;
修正Abator.java生成UTF-8文件中文乱码问题;
去掉生成的sqlMap文件加的sqlMap后缀。
其实代码很简单,可以直接下源代码,在你Abator新增工程目录下修改源代码,然后替换jar下文件,实现定制化。
2011-10-19更新
比较了下Mybatis和ibatis,最后还是用ibatis,主要是已经弄了老半天ibatis,Spring也没提供Mybatis的整合包,Mybatis自己提供了,并且有自动代码生成工具,但是也不自动生成service和daoimpl,而我已经把Abator改造成支持生成Spring方式的Service和ServiceImpl,ibatis自己改造也能实现分页和批处理。
除了插件生成代码的方式,Abator还试了下面2种生成代码的方式:
1. Abator如果下载了源代码,可以通过修改AbatorRunner.java的jar文件入口方法,直接执行该文件 java application,就可以生成文件了。修改方法如下:
Map arguments = parseCommandLine(args);
if (!arguments.containsKey(CONFIG_FILE)) {
writeLine(Messages.getString(“RuntimeError.0″)); //$NON-NLS-1$
return;
}
替换为
Map arguments = new HashMap();
arguments.put(CONFIG_FILE,”E:\\workspace\\ibatisTest\\abatorConfig.xml”);
2. Abator还支持Ant的方式生成文件,build.xml配置如下:
<project default=”genfiles” basedir=”.”>
<property name=”generated.source.dir” value=”${basedir}” />
<target name=”genfiles” description=”Generate the files”>
<taskdef name=”abator” classname=”org.apache.ibatis.abator.ant.AbatorAntTask” classpath=”abator.jar” />
<abator overwrite=”false” configfile=”abatorConfig.xml” verbose=”false”>
<propertyset>
<propertyref name=”generated.source.dir” />
</propertyset>
</abator>
</target>
</project>
Abator插件,这次修改的内容:
用”__”开头代替,改成用”_”开头;
resultMap还是返回用”_”开头,防止重新生成;
支持生成业务逻辑层Service和ServiceImpl,目前只修改了SPRING下的,需要abatorConfig.xml增加如下配置:
<serviceGenerator daoPackage=”com.lingran.dao” targetPackage=”com.lingran.service.db” targetProject=”E:\workspace\MyWorld\src” type=”SPRING”/>
与daoGenerator同层次,daoPackage为上面daoGenerator的targetPackage路径;