自動生成ibatis映射文件
使用了一個多月的iBatis,大體覺得挺不錯.速度靈活性都還可以.比起以前的完全手動編程,節(jié)約了大量的時間.但是,隨著使用次數(shù)的增多,一個問題很快就暴露出來,那就是iBatis映射文件寫起來太煩了,都是重復單調(diào)的打字.
于是就寫了一個小程序,來做這個iBatis映射文件的工作.
先說一下原理:iBatis中的映射是很有規(guī)律的,最重要的是做好數(shù)據(jù)庫字段到j(luò)avabean屬性的映射,而其他的地方改動很少. 這就好辦了,我們采用模板,把變的部分抽取出來,把不變的部分直接寫到模板中.
在程序中提取javabean類的屬性,進行分析,做一個javabean屬性和數(shù)據(jù)庫字段的一一對應關(guān)系.然后把這種關(guān)系填充到模板中.
我們來看下例子:
- 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;
- }
- ...
- }
這是一個普通的javabean
我們再看一下iBatis映射文件轉(zhuǎn)化后的結(jié)果:
- ﹤?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﹥
這里我只是做了select,insert,update三種簡單模型,但是有了這個模型,接下來的工作就容易多了,改幾下就可以了.
【編輯推薦】