appfuse下使用ibatis的一般步骤和若干问题:
1:在生成的项目的extras/ibatis下运行ant install
刷新项目,出现两个错误:
Project ngucs is missing required library: 'lib/ibatis-2.1.7/jta.jar'
The project cannot be built until build path errors are resolved
两种方法解决可以这个问题:
(1)打开.classpath文件,将下面这一行删除(因为在hibernate的配置中已经引用了jta.jar)
<classpathentry kind="lib" path="lib/ibatis-2.1.7/jta.jar"/>
(2)将lib/hibernate-3.1.3/lib/jta.jar拷贝到lib/ibatis-2.1.7/,刷新项目。
2:如果不使用hibernate相关的操作,那么将和hibernate相关的文件(包括配置文件)和包删除,以防发生混淆
3:修改在生成的项目extras/appgen文件的build.xml
将
<target name="merge-config" depends="merge-tests,merge-menu,merge-hibernate,merge-ibatis">
中的“merge-hibernate,”去掉,这样在appgen下运行ant install-detailed的时候就不会生成hibernate相关的文件了!
4:生成文件不一定都能通过编译,原因有很多种,常见的原因有:
(1)数据表设计时对主键的类型的错误设计,通常是太短了,建议主键都使用bigserial类型,如果使用serial,在生成的文件中多处会出现对int类型一些操作!使用bigserial对应生成的类型是Integer这样就不会有错了!--对应这种错误,如果不能修改数据的设计的话就只好修改代码咯!快捷的方法是将model中主键对应的成员变量的类型改成Integer,在其他地方(xml,dao,servic,action)对这个成员变量的引用(一般通过取值函数)也做相应的类型修改就可以了。
5:修改完和主键相关的地方后,发现还有几个和form相关的错误,这是因为相应的form还没有生成,回到项目的根目录,使用ant deploy命令就会生成了.
6:关于insert中的selectKey,pgsql中应该是这样放到insert sql语句后面,使用的函数应该是currval('tablename_id_seq')
7:可以在appgen中修改相应的模板(xdt文件--一般在生成的项目extras/appgen/src中),使得appgen生成的代码更接近自己的需要的代码,这样就可以减少生成代码后的修改工作。
Let life be beautiful like summer flowers and death like autumn leaves.