使用了一个多月的iBatis,大体觉得挺不错.速度灵活性都还可以.比起以前的完全手动编程,节约了大量的时间.但是,随着使用次数的增多,一个问题很快就暴露出来,那就是iBatis映射文件写起来太烦了,都是重复单调的打字.
于是就写了一个小程序,来做这个iBatis映射文件的工作.
先说一下原理:iBatis中的映射是很有规律的,最重要的是做好数据库字段到javabean属性的映射,而其他的地方改动很少. 这就好办了,我们采用模板,把变的部分抽取出来,把不变的部分直接写到模板中.
在程序中提取javabean类的属性,进行分析,做一个javabean属性和数据库字段的一一对应关系.然后把这种关系填充到模板中.
我们来看下例子:
public class PlanExe ...{
private int id;
private long planId;
private String title;
private String body;
private String createTime;
private String lastModifyTime;
public String getBody() ...{
return body;
}
...
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
这是一个普通的javabean
我们再看一下iBatis映射文件转化后的结果:
﹤?xml version="1.0" encoding="UTF-8" ?﹥
﹤!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd"﹥
﹤sqlMap namespace="PlanExe"﹥
﹤typeAlias alias="PlanExe" type="zhmt.keeper.model.PlanExe" /﹥
﹤select id="PlanExe.getPlanExeById"
resultClass="PlanExe" parameterClass="int"﹥
SELECT
id AS id,
plan_id AS planId,
title AS title,
body AS body,
create_time AS createTime,
last_modify_time AS lastModifyTime
FROM plan_exe
WHERE id=#id#;
﹤/select﹥
﹤insert id="PlanExe.insert" parameterClass="PlanExe"﹥
INSERT INTO plan_exe
(id,plan_id,title,body,create_time,last_modify_time)
VALUES
(#id#,#planId#,#title#,#body#,#createTime#,#lastModifyTime#) ;
﹤/insert﹥
﹤update id="PlanExe.update" parameterClass="PlanExe"﹥
UPDATE plan_exe SET
id=#id#,
plan_id=#planId#,
title=#title#,
body=#body#,
create_time=#createTime#,
last_modify_time=#lastModifyTime#
WHERE id = #id# ;
﹤/update﹥
﹤/sqlMap﹥
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
这里我只是做了select,insert,update三种简单模型,但是有了这个模型,接下来的工作就容易多了,改几下就可以了.
【编辑推荐】