mybatis的簡單應(yīng)用_第1頁
mybatis的簡單應(yīng)用_第2頁
mybatis的簡單應(yīng)用_第3頁
mybatis的簡單應(yīng)用_第4頁
mybatis的簡單應(yīng)用_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、mybatis的簡單應(yīng)用:mybatis 優(yōu)點(diǎn)1 :半自動(dòng)化的orm實(shí)現(xiàn)(實(shí)體類和sql語句之間建立映射關(guān)系)2 : sql代碼從程序代碼中徹底分離,可重用3 :與jdbc相比,減少了 50%以上的代碼量4:小巧靈活、簡單易學(xué),是最簡單的持久化框架5 :提供xml標(biāo)簽,支持編寫動(dòng)態(tài)sql6 :提供映射標(biāo)簽,支持對象與數(shù)據(jù)庫的orm字段映射二:mybatis 缺點(diǎn)1 : sql語句編寫工作量大,對開發(fā)人員有一定sql技術(shù)要求2 :數(shù)據(jù)庫移植性差(不同數(shù)據(jù)庫,sql語句語法有所不同)三:mybatis基本要素1 : sqisessionfactorybuilder :創(chuàng)建 session 工廠類生

2、命周期:用過即丟,只存在于方法體內(nèi)(局部變量)2 : sqisessionfactory : session 工廠類生命周期:application (生命周期與應(yīng)用的生命周期相同)采用單例模式:存在于整個(gè)應(yīng)用運(yùn)行時(shí),并且同時(shí)只存在一個(gè)對象實(shí) 例3 : sqisession : session類(包含了執(zhí)行sql所需的所有方法)生命周期:request在sqisession里可以執(zhí)行多次sql語句,但一旦關(guān)閉了 sqisession就需要重新創(chuàng)建線程級(jí)別,不能共享,線程不安全,對應(yīng)一次數(shù)據(jù)庫會(huì)話,會(huì)話結(jié)束必須關(guān)閉4 : mybatis-config.xml系統(tǒng)核心配置文件5 : mapper.

3、xml sql 映射文件四:mybatis兩種使用方式操作數(shù)據(jù)1 :通過sqisession實(shí)例直接運(yùn)行映射的sql語句調(diào)用selectlist/selectone方法執(zhí)行查詢操作直接運(yùn)行映射的sql語句,參數(shù)為:rolemapper.xml中命 名空間名稱+sql映射的id"cn.zx.dao.role.rolemapper.findrolelist":必須是唯一的2 :基于mapper接口方式操作數(shù)據(jù)調(diào)用getmapper(接口.class)執(zhí)行dao接口方法來實(shí)現(xiàn)對數(shù) 據(jù)庫的查詢操作xml映射文件的namespace屬性必須跟相對應(yīng)的接口全路徑 同名xml映射文件中s

4、ql語句的id必須與接口中的方法同名五:使用mybatis的開發(fā)步驟1 :下載mybatis322.jar包并導(dǎo)入工程2 :編寫 mybatis 核d配置文件(configuration.xml)3 :創(chuàng)建實(shí)體類-pojo4 : dao 層sql 映射文件(mapper.xml)5:創(chuàng)建測試類讀取核心配置文件mybatis-config.xml創(chuàng)建sqisessionfactory對象,讀取配置文件創(chuàng)建sqisession對象調(diào)用mapper文件進(jìn)行數(shù)據(jù)操作六:1 :數(shù)據(jù)庫中的字段與類中的屬性映射問題數(shù)據(jù)庫中的字段與類中的屬性采用同一套命名規(guī)則(駝峰),框架能夠 自動(dòng)匹配映射,無需再做映射;注

5、意:如果數(shù)據(jù)庫中的字段與類中的屬性命名不一致, 需要手動(dòng)映射,借助resultmap來實(shí)現(xiàn)。2 :事務(wù)控制public static sqisession createsqisession()/true關(guān)閉事務(wù)控制(為自動(dòng)提交事務(wù))默認(rèn)為true在增刪改的時(shí)候有一定危險(xiǎn)/false開啟事務(wù)控制提交sqlsmit();回滾sqisession.rollback();return factory.ope nsessi on (false);3:參數(shù)傳入:單參傳入在sql映射xml中,傳入單個(gè)參數(shù)#兇中的x參數(shù)名需要與接口方法中的參數(shù)名保持一致(高版本的可以保持不一致,但不建議命名不規(guī)范):多參傳入

6、a、將多個(gè)參數(shù)封裝成對象,以對象方式入?yún)?b、將多個(gè)參數(shù)封裝成map集合,以map集合方式入?yún)?public list<user> getuserlistbymap(map<string, stringusermap);<select id="getuserlistbymap" resulttype=ncn.zx.pojo.user” parametert ype="mapm>select * from smbms_userwhere username like concat('%',#uname,'%)and

7、 userrole = #urole</select>map<string, string> usermap = new hashmap<string, string>(); usermap.put("unamem, "zhang"); usermap.put(”urole”,”2“);c、使用param注解實(shí)現(xiàn)多參入?yún)⒃诮涌诜椒ㄖ校簆ublic int updatepwd(param('id)lnteger id, param(”userpassword”)string pwd);sql語句映射的xml中,可以直接用參

8、數(shù)指定的值直接在文件中寫入(也 無需指定參數(shù)類型)#參數(shù)指定值<update id=,updatepwd" >update smbms_user set userpassword=#userpassword where id=#id</update>4 :增刪改的xml配置文件中無需指定resulttype屬性,默認(rèn)返回?cái)?shù)據(jù)庫的影響行數(shù)5:連接查詢連接查詢根據(jù)用戶名和角色編號(hào)查詢用戶信息(顯示兩張表的數(shù)據(jù))1需要在用戶類中添加角色姓名的屬性2 編寫查詢語句查詢兩張表信息<select id=”getjoinuserlist" resulttyp

9、e="cn.zx.pojo.user”aselect u.*,r.rolename from smbms_user u,smbms_role r where u.userrole = r.id and u.userrole = #userrole and u.username like con cat ('%',#username,'%') </select>6:分頁查詢v!查詢用戶列表(分頁顯示)limit #從第幾條開始查詢,0代表第一條(當(dāng)前頁1廠每頁顯示的記錄 數(shù),#每頁顯示的記錄數(shù)<select id=hgetfenyetu

10、serlisth resulttype=,fcn.zx.pojo.userft>select u.*,r.rolename from smbms_user u,smbms_role r where u.userrole = r.idorder by id limit #from,#pagesize</select>7 :當(dāng)數(shù)據(jù)庫中的字段與對象的屬性不一致時(shí)需要通過resultmap來映射<!-當(dāng)數(shù)據(jù)庫中的字段信息與對象的屬性不一致時(shí)需要通過resultmap來 映射-><resultmap type=ncn.zx.pojo.addressn id=haddr

11、essresultll><id property=hnom column=hidf7><result property=mphone” column=hte<result property=”name" column=”contact”/><result property=naddressinfo”colu mn=”addressdesc”/></resultmap>v!-查詢所有地址信息-><select id="findaddresslist" resultmap="addressresulth>select * from smbms_address</select>8:參數(shù)和返回值resulttype : sql語句返回值類型的完整類名或別名基本數(shù)據(jù)類型(int、string. date等)、復(fù)雜數(shù)據(jù)類型(java實(shí)體類、m即等)resultmap :對外部 resultmap 的引用應(yīng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論