成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

支持自動生成sql語句的ibatis改造

開發 后端
使用iBatis開發項目工作量比較大,因為每個sql語句都必須自己寫。一般的CRUD sql都是sql 92規范,基本上都通用所有數據庫。如果可以通過ibatis改造實現自動生成iql(ibatis sql)可以簡化大量的工作。

什么是iBatis:

使用ibatis 提供的ORM機制,對業務邏輯實現人員而言,面對的是純粹的Java對象, 這一層與通過Hibernate 實現ORM 而言基本一致,而對于具體的數據操作,Hibernate 會自動生成SQL 語句,而ibatis 則要求開發者編寫具體的SQL 語句。相對Hibernate等 “全自動”ORM機制而言,ibatis 以SQL開發的工作量和數據庫移植性上的讓步,為系統 設計提供了更大的自由空間。作為“全自動”ORM 實現的一種有益補充,ibatis 的出現顯 得別具意義。

使用iBatis開發項目工作量比較大,因為每個sql語句都必須自己寫。一般的CRUD sql都是sql 92規范,基本上都通用所有數據庫。我想如果可以通過hack ibatis源代碼實現自動生成iql(ibatis sql)可以簡化多少開發量啊。(最開始有這個想法是因為ibatis for .net實現了這個功能,而ibatis for java沒有)

說干就干,決定依照ibatis for .net的實現方式來實現,通過sql-map的parametermap來實現。以最小代碼來實現該功能。

查看了相關dtd后,發現《parameter》節點沒有column定義,《parameterMap》節點沒有extends定義,《result》和《resultMap》這倒是有。于是修改dtd定義和BasicParameterMapping類,使其支持column。并且修改SqlMapParser類,使其初始化的時候支持column和extends。加入column的目的是為了支持java屬性對應到不同的字段上。加入extends的目的是為了重用parametermap。

parameter修改完成后,就要修改dtd文檔定義,使其支持《generate》節點,我們只需要《insert》、《update》、《delete》、《select》這四個節點支持就行,《statement》和《sql》節點考慮在下一版支持。generate需要三個屬性,分別是table、where、excludes。其中table表示是對應的表,適用于所有;where表示查詢條件字段,適用于select、update、delete;excludes表示要排除哪些parameter,適用于select、update。

dtd文檔定義修改完成后,就可以修改ibatis加載類,使其支持generate。這個切入點比較難找,因為要仔細分析他的源代碼。經過仔細思考后,發現ibatis和sql-map支持《include》,決定在include后面加入generate的解析代碼。這樣比較方便的找到了切入點。

找到SqlStatementParser類,找到了parseDynamicTags方法,里面就有include的解析。這里面的判斷代碼是else if,我再加入一個generate的else if 就OK啦。經過一天的修改,完成。工作量也不是太大。

【編輯推薦】

  1. ibatis自動生成工具abator使用注意事項
  2. ibatis resultMap groupBy屬性巧使用
  3. 了解iBatis.Net中的ResultMap
  4. ibatis插件的安裝方式
  5. 輕松完成ibatis自動代碼生成
責任編輯:桑丘 來源: javaeye論壇
相關推薦

2009-07-16 11:21:19

ibatis主鍵自動生成

2009-07-14 18:24:31

ibatis映射文件

2010-09-07 16:46:56

SQL語句nsert

2009-07-16 09:09:36

ibatis自動代碼

2009-07-21 16:17:28

iBATIS.NET

2009-07-15 17:31:08

iBATIS Ecli

2009-07-16 11:40:23

ibatis自動生成abator

2009-07-14 17:12:26

ibatis自動代碼生

2009-07-21 15:05:43

2010-09-07 16:31:17

SQL語句insert

2009-07-17 14:20:31

ibatis Dao

2021-01-28 15:16:09

程序員技能開發者

2009-03-04 13:10:41

SQL語句INSERTDELETE

2009-07-24 16:59:57

iBatis模糊查詢

2010-11-18 17:08:44

Oracle使用SQL

2009-06-29 09:08:12

半自動化ORM實現

2009-07-20 16:18:54

iBatis分頁Hibernate式的

2010-09-03 15:47:40

SQL語句鎖定

2010-09-03 14:39:15

SQLSELECT語句

2009-07-21 15:21:59

iBATIS.NET多
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产乱码久久久久久1区2区 | 久99久视频 | 亚洲在线 | 亚洲精品不卡 | 精品久| 亚洲中午字幕 | 午夜精品视频在线观看 | 91精品国产色综合久久 | 丝袜久久| 免费国产黄网站在线观看视频 | 成人亚洲一区 | 色免费在线视频 | 日韩和的一区二区 | 久久69精品久久久久久国产越南 | 午夜免费福利片 | 日韩精品成人在线 | 欧美久久久久久久久 | 99精品欧美一区二区蜜桃免费 | 天天射视频 | 欧美日韩在线视频一区 | 日韩高清中文字幕 | 天堂一区二区三区四区 | 精品国产一二三区 | 欧美手机在线 | 精品久久久久久亚洲精品 | 麻豆久久久9性大片 | 久久99精品久久久久久琪琪 | 日本久久精品视频 | 日日做夜夜爽毛片麻豆 | 中文字幕精品一区二区三区精品 | 日本黄色片免费在线观看 | 亚洲精品国产综合区久久久久久久 | 日韩视频三区 | 在线成人 | 日韩精品一区二区三区视频播放 | 久久99精品久久久久久国产越南 | 久久久久久蜜桃一区二区 | h肉视频 | 天天干天天干 | 精品1区2区3区 | 亚洲色欲色欲www |