




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ibatis的學習筆記現在最如日中天的是Hibernate,但老朽學了一下,然後就沒有再學下去,原因簡單,因為設計思路不同。以前做的系統全是在設計完成後,數據庫先行,並且有大量的主從表以及存儲過程,觸發器以及函數等內容,這是由於需要充分利用DBMS本身的優化設計以提高性能和使用的便利,這點Hibernate是無法體會得到的。另外,這種設計思想對於熟悉SQL的人來講並感覺不到太大的方便之處,除了不用再在編寫增修刪等的工作上進行重復勞動,而HQL更是有點過分的感覺。當然,老朽對Hibernate了解不多,所以可能其沒非如此弱也不一定,但已經不想再花時間來更深入的了解一下了,這個時間可以設計一個新的ORM,差不多吧?差多了,呵呵。其優點在於:1. 由面向表格轉為面向對象,其實這樣說有偏頗之處,表格如果是按基本的設計方式來的話,大部分是實體的數據表現,其本身就是對象,雖然是基於關系數據庫的表現。2. 隱藏了SQL,就是將對數據庫系統的直接操作隱藏了起來,好處是使不諳數據庫的開發人員可以不用再學,而直接使用某語言的方式就可以做,壞處是,這樣使得數據庫本身只是成為了數據存儲器,而其本身的好處再也體現不出來了。好象上面說的不是優點,不過第一句話是優點的,確實是,但其後面卻有幾個概念和應用上的誤解,目前對很多初入門的同學影響很大,唉,計算機應用的技術又豈是一語可蓋之的,因為應用是世界一種在基礎層面之上一個層面的表現方式,故亦如世界本身一樣,包羅萬象也。好久以前,大約一年多了吧,知道有個ibatis這樣一個東西,卻一直沒有看一下,只是由朋友和一些簡要的文檔那裡知道一些特性,就是它是由自己定義SQL來的,沒有完全封裝,所以提供了更大的自由度和擴展性,於是,也就不如Hibernate來的徹底和方便。應用學習者,由實例入門也,此方為正途,省時又易上手。於是編一個小小的例子,只對一個單表進行基本操作,感覺還行,例程寫法,後面再一步步的來列出來,兼之批評一下,有一些文章對例程往往語焉不詳,特別在當前配置文件大行其道的時候,對配置文件的位置竟然不講,而且一文中,文件名始與終不統一,頗有些始亂終棄的感覺,嘿嘿,此詞用得可能不好,卻是最好的寫照,此類文章是浪費時間的最好去處,讀到最後,按例程走的結果是失敗,真是賠了時間又走錯路。好了,在做完該小例後,開始亂想,主要有幾個方面:1. 主從表的處理2. 存儲過程的處理3. 不規則查詢的處理4. 編寫工具程序的實現最近可能是由於更多傾向於IDE的設計,所以對第四條想得比較多些,對於主從表的處理,老朽一直沒有想到一個比較好的處理方法,特別對於數據新增和修改的准確性上面,很是有點頭痛。主從表的問題,主要是體現在對主從表同時新增和修改的情況,從表數據的准確性驗證比較復雜。事務在這裡並不是萬能的,所以這裡應該更多的考慮在數據庫之前的驗證准確性應該是解決問題的核心所在吧。編寫工具程序,想了一下,對ibatis如果要進行編寫並不是一個簡單的事情,因為裡面客制化的內容比較多,想了一下,就決定不想了。最近更在考慮一個元對象的問題,就是將類的屬性本身實際上也是一個對象,那麼這個類別的類的設計,其實也就是一種元數據了,這樣可以對類的屬性進行統一,從而可以在應用層處理上提供更大的方便,比如輸入界面,可以通過程序直接動態拉出來等等吧。參考文檔:1. iBATIS Database Layer開發指南Clinton Begin 著劉濤譯附:ibatis例程(注:該例來自於參考文檔,改正了其中的部分錯誤)1. 構造環境1.1. 建立project目錄結構,這一部分很簡單,老朽用eclipse,目錄結構如下:1.2. 將相關的類庫包文件復制至ibatis目錄下面,並加入到該工程的build path,就是加入classpath:如此,工程的基本環境構建完成。2. 建立數據表並設置數據源(注:在這裡,為了方便,使用了橋接方式)2.1. 建立數據表,SQL如下,老朽用的是SQLServer,無他,只因機器上有。CREATE TABLE PERSON (PER_ID numeric(5, 0) NOT NULL ,PER_FIRST_NAME varchar (40) NOT NULL ,PER_LAST_NAME varchar (40) NOT NULL ,PER_BIRTH_DATE datetime NULL ,PER_WEIGHT_KG numeric(4, 2) NOT NULL ,PER_HEIGHT_M numeric(4, 2) NOT NULL ,PRIMARY KEY (PER_ID)2.2. 建立數據源,並指向Person表所在的數據庫3. 編寫例程代碼,在這裡,只是建立對Person表的基本操作代碼,如新增,修改和刪除而已。3.1. Person.java 這是基本類,該類就是提供一個基本結構package examples.domain;import java.util.Date;public class Personprivate intid;/ PER_IDprivate StringfirstName;/ PER_FIRST_NAMEprivate StringlastName;/ PER_LAST_NAMEprivate DatebirthDate;/ PER_BIRTH_DATEprivate doubleweightInKilograms;/ PER_WEIGHT_KGprivate doubleheightInMeters;/ PER_HEIGHT_Mpublic Person()public String toString()return + id + | + firstName + | + lastName + | + birthDate + | + weightInKilograms + | + heightInMeters + ;public Date getBirthDate() return birthDate; public void setBirthDate(Date birthDate) this.birthDate = birthDate; public String getFirstName() return firstName; public void setFirstName(String firstName) this.firstName = firstName; public double getHeightInMeters() return heightInMeters; public void setHeightInMeters(double heightInMeters) this.heightInMeters = heightInMeters; public int getId() return id; public void setId(int id) this.id = id; public String getLastName() return lastName; public void setLastName(String lastName) this.lastName = lastName; public double getWeightInKilograms() return weightInKilograms; public void setWeightInKilograms(double weightInKilograms) this.weightInKilograms = weightInKilograms; 3.2. Person.xml SQL映射文件,這個就是將SQL語句與ibatis的數據操作方法相映射的文件DELETE PERSON WHERE PER_ID = #id#3.3. SqlMapConfigEperties 數據庫連接屬性文件driver=sun.jdbc.odbc.JdbcOdbcDriverurl=jdbc:odbc:testusername=sapassword=1234563.4. SqlMapConfigExample.xml ibatis基本配置文件,核心配置文件3.5. MyAppSqlConfig.java 調用及測試程序package example.application;import java.io.Reader;import java.util.Date;import mon.resources.Resources;import com.ibatis.db.sqlmap.SqlMap;import com.ibatis.db.sqlmap.XmlSqlMapBuilder;import examples.domain.Person;public class MyAppSqlConfigprivate static final SqlMapsqlMap;statictryString resource = SqlMapConfigExample.xml;Reader reader = Resources.getResourceAsReader(resource);sqlMap = XmlSqlMapBuilder.buildSqlMap(reader);catch(Exception e)e.printStackTrace();throw new RuntimeException(Error initializing: + e);public static SqlMap getSqlMapInstance() return sqlMap; public static void main(String args)SqlMap sqlMap = MyAppSqlConfig.getSqlMapInstance();Integer id = new Integer(2);try/ SelectPerson person = (Person)sqlMap.executeQueryForObject(getPerson, id);System.out.println(.person= + person);/ Updateperson.setId(3);person.setFirstName(Deny);person.setLastName(Liu);person.setBirthDate(new Date();person.setHeightInMeters(1.83);person.setWeightInKilograms(86.36);System.out.println(.update= + sqlMap.executeUpdate(updatePerson, person);/ Deleteperson.setId(1);System.out.println(.delete= + sqlMap.executeUpdate(deletePerson, person);/ CreatePerson newPerson = new Person();newPerson.setId(1);newPerson.setFirstName(Clinton);newPerson.setLastName(Begin);newPerson.setBirthDate(new Date();newPerson.setHeightInMeters(1.83);newPerson.setWeightInKilograms(86.36);System.out.println(.insert= + sqlMap.executeUpdate (insertPerson, newPerson);catch(Exception e)e.printStackTrace();在這個
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DZ/T 0196.7-1997测井仪通用技术条件声波测井仪
- CJ/T 90-1999真空吸污车性能试验方法
- CJ/T 427-2013超高分子量聚乙烯膜片复合管
- CJ/T 358-2010非开挖铺设用高密度聚乙烯排水管
- CJ/T 213-2005城市市政综合监管信息系统单元网格划分与编码规则
- CJ/T 192-2017内衬不锈钢复合钢管
- CJ/T 189-2007钢丝网骨架塑料(聚乙烯)复合管材及管件
- CJ/T 163-2015导流型容积式水加热器和半容积式水加热器
- CJ 42-1999工业用水考核指标及计算方法
- 2025年软件评测师面临的技术挑战试题及答案
- 学生课业负担监测、公告、举报、问责制度
- 2024北京大兴区高一(下)期末数学试题及答案
- PLCS7-300课后习题答案
- 肘管综合症患者护理查房
- 2023年演出经纪人考试历年真题附答案(巩固)
- 媒介与性别文化传播智慧树知到期末考试答案章节答案2024年浙江工业大学
- 工作场所职业病危害作业分级第1部分:生产性粉尘
- 24春国家开放大学《学前儿童美术教育活动指导》期末大作业参考答案
- 头孢他啶的代谢研究
- 智能轮椅项目融资方案
- 2024年江苏武进经济发展集团招聘笔试参考题库含答案解析
评论
0/150
提交评论