版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
mybatis第一mybatis的基礎(chǔ)知mybatisspringmvc第一天:基礎(chǔ)知識(重點,內(nèi)容量多jdbc程序(jdbc開發(fā))mybatis框架原理(掌握mybatismybatisdaodao開發(fā)方法(daodao實現(xiàn)類掌握mybaits的mapper接口(相當(dāng)于dao接口)開發(fā)方法(掌握mybatisSqlMapConfig.xmlmybatis:mybatis輸入映射(掌握mybatis輸出映射(掌握mybatissql(掌握高級結(jié)果集映射(一對一、一對多、多對多mybatismybatis查詢緩存(一級緩存、二級緩存)mybaitsspring進(jìn)行整合(掌握)mybatis逆向工程對原生態(tài)jdbc程序中問題總環(huán)java環(huán)境:jdk1.7.0_72mysql數(shù)導(dǎo)入下邊的sql_data.sql:記錄測試數(shù)據(jù),在實際企業(yè)開發(fā)中,最后提供一個初始化jdbc程jdbcmysqljavajar數(shù)據(jù)庫驅(qū)動包mysql驅(qū)動。oracle的驅(qū)動。問題總響數(shù)據(jù)庫性能。2、將sql語句硬編碼到j(luò)ava代碼中,如果sql語句修改,需要重新編譯java代碼,不利于。sqlxmlsqljava代碼進(jìn)行重新編譯。3、向preparedStatement中設(shè)置參數(shù),對占位符號位置和設(shè)置參數(shù)值,硬編碼在java代碼中,不利于。sqlxml中。4、從resutSet中遍歷結(jié)果集數(shù)據(jù)時,存在硬編碼,將獲取表的字段進(jìn)行硬編碼,不利于。java對象。mybatis框mybatisapachemybatis托管到goolecode下,再后來托管到下 sql)sql語句。mybatis框輸出結(jié)果java簡單類配置了數(shù)據(jù)源、事務(wù)等mybatis運(yùn)行環(huán)境作用:操作數(shù)據(jù)庫(發(fā) 查輸入?yún)?shù)java簡單類入門程需環(huán)java環(huán)境:jdk1.7.0_72mybatis運(yùn)行環(huán)境(jar包 /mybatis/mybatis-3/releases,3.2.7版libmybatis-3.2.7.jar:mysql工程結(jié)mybatis根據(jù)用戶id(主鍵)查詢用戶信po映射文User.xml(原始ibatis命名),mapper開發(fā)映射文件名稱叫XXXMapper.xml,比如:UserMapper.xml、sqlsqlMapConfig.xml程序編根據(jù)用戶名稱模糊查詢用戶信映射文3.PAGE3.PAGE8.2程序代添加用映射文User.xml自增主鍵返mysqlinsert提交之前自動生成一個自增主鍵。mysql函數(shù)獲取到剛插入記錄的自增主鍵:insertinsertUser非自增主鍵返回(使用mysqluuid()idstring35uuid()sqluuid()insertoracle<selectKeykeyProperty="id"order="BEFORE"resultType="java.lang.String">SELECT序列名.nextval() 刪除用映射文代碼更新用映射文代總parameterType#{}和如果接收簡單類型,#{}value或其它名稱。#{}接收pojo對象值,通過OGNL對象中的屬性值,通過屬性.屬性.屬性...的方式獲取對象屬性值${}表示一個拼接符號,會sql注入,所以不建議使用${}如果接收簡單類型,${}value。${}接收pojo對象值,通過OGNL對象中的屬性值,通過屬性.屬性.屬性...的方式獲取對象屬性值selectOneselectOneselectOneselectList也可以實現(xiàn)(list中只有一個selectList表示查詢出一個列表(多條記錄)selectListselectOneselectOneorg.apache.ibatis.exceptions.TooManyResultsException:Expectedoneresult(ornull)tobereturnedbyselectOne(),butfound:4hibernateORM框架(對象關(guān)系映射sql,sql語句自動生成了。對sql語句進(jìn)行優(yōu)化、修改比較的。適用與需求變化不多的中小型項目,比如:管理系統(tǒng),erp、orm、oasql,mybatis也可以實現(xiàn)映射(輸入映射、輸出映射。mybatisdao的方SqlSession使用范SqlSessionFactoryBuilderSqlSessionFactoryBuilder當(dāng)成一個工具類使用即可SqlSessionFactoryBuilder。SqlSessionFactorynewSqlSessionFactoryBuilder即可。mybatisspringsqlSessionFactorySqlSession是一個面向用戶(程序員)SqlSession中提供了很多操作數(shù)據(jù)庫的方法:如:selectOne(返回單個對象)、selectList(返回單個或多個對象SqlSessionSqlSesion實現(xiàn)類中除了有接口中的方法(操作數(shù)據(jù)庫的方法)SqlSession最佳應(yīng)用場合在方法體內(nèi),定義成局部變量使用dao開發(fā)方法(程序員需要寫dao接口和dao實現(xiàn)類思daodaodaoSqlSessionFactorySqlSessionFactorydao接dao接口實現(xiàn)publicclassUserDaoImplimplementsUserDao需要向dao實現(xiàn)類中注入privateSqlSessionFactorypublicUserDaoImpl(SqlSessionFactorysqlSessionFactory)this.sqlSessionFactory=}publicUserfindUserById(intid)throwsException{SqlSessionsqlSession=sqlSessionFactory.openSession();Useruser=sqlSession.selectOne("test.findUserById",return}publicvoidinsertUser(Useruser)throwsException{SqlSessionsqlSession=sqlSessionFactory.openSession();sqlSession.insert("test.insertUser",user);}publicvoiddeleteUser(intid)throwsException{SqlSessionsqlSession=sqlSessionFactory.openSession();sqlSession.delete("test.deleteUser",id);}}測試代碼總結(jié)原始dao開發(fā)問1、dao2sqlsessionstatementidmapper方法(程序員只需要mapper接口(相當(dāng)于dao接)思路(mapper開發(fā)規(guī)范程序員編寫mapper接口需要遵循一些開發(fā)規(guī)范,mybatis可以自動生成mapper接口實現(xiàn)類對象1mapper.xmlnamespacemapperUseruser=sqlSession.selectOne("test.findUserById",id);sqlSession.insert("test.insertUser",user);SqlMapConfig.xml中加載測一些問題總 對象內(nèi)部調(diào)用selectOne或,如果mapper方法返回集合對象,對象內(nèi)部通過selectList查詢數(shù)據(jù)庫 mapper接口方法參數(shù)只能有一影響系統(tǒng)開mapper接口方法參數(shù)只能有一個,系統(tǒng)是否不利于擴(kuò)展架中,dao層的代碼是被業(yè)務(wù)層公用的即使mapper接口只有一個參數(shù),可以使用包裝類型的pojo滿足不同的業(yè)務(wù)方法的需求properties屬pertiesSqlMapCperties的屬性值。SqlMapConfig.xml中就不需要對數(shù)據(jù)庫連接參數(shù)硬編碼。將數(shù)據(jù)庫連接參數(shù)只配置在perties中原因方便對參數(shù)進(jìn)行統(tǒng)一管理其它xml可以該pertiessqlMapConfig.xmlpropertiesMyBatis在properties元素體內(nèi)定義的屬性首先被然后會properties元素中resource或url加載的屬性,它會覆蓋已的同名屬性最后parameterType傳遞的屬性,它會覆蓋已的同名屬性propertiesproperties文件中。properties文件中定義屬性名要有一定的特殊性,如:XXXXX.XXXXX.XXXXsettings全局參數(shù)配mybatis框架在運(yùn)行時可以調(diào)整一些運(yùn)行參數(shù)。mybatistypeAliases(別名)重需mapper.xml中通過別名定義,方便開發(fā)。別 映射的類 自定義別單個別名定批量定義別名(常用typeHandlers(類型處理器mybatistypeHandlersjdbcjava通常情況下,mybatis提供的類型處理器滿足日常需要,不需要自定義mybatisJavaJDBC類CHAR和VARCHAR類CLOB和NVARCHAR和NCHAR類NCLOB類TIMESTAMP類DATE類TIME類TIMESTAMP類DATE類TIME類VARCHAR-任何兼容的字串類型,作為代碼(而mappers(映射配置通過resource加載單個映射文mapper接口加載單個 批量加載mapper(推薦使用輸入映parameterType指定輸入?yún)?shù)的類型,類型可以是簡單類型、hashmap、pojo。pojo的包裝對需完成用戶信息的綜合查詢,需要傳入查詢條件很復(fù)雜(可能包括用戶信息、其它信息,比如商品、訂單的定義包裝類型pojo中將復(fù)雜的查詢條件包裝進(jìn)去。測試代輸出映resultType進(jìn)行輸出映射,只有查詢出來的列名pojo中的屬性名一致,該列才可以映射成功。pojopojo對象。pojopojonull輸出簡單類需測試代小pojo對象和pojo列pojo單個對象還是一個列表(listpojomapper.xmlresultType指定的類型是一樣的。mapper.java指定的方法返回值類型不一樣:1pojo2pojolist生成的動態(tài)對象中是根據(jù)mapper方法的返回值類型確定是調(diào)用selectOne(返回單個對象調(diào)用)還是(返回集合對象調(diào)用mybatisresultMapresultMap使用方如果查詢出來的列名和pojoresultMap對列名和pojo12resultMapstatement將下邊的sql使用User完成映SELECTidid_,usernameusername_FROMUSERWHEREUserresultMapstatement的輸出映射類測小使用resultType進(jìn)行輸出映射,只有查詢出來的列名和pojo中的屬性名一致,該列才可以映射成功如果查詢出來的列名和pojo的屬性名不一致通過定義一個resultMap對列名和pojo屬性名之間作一個映射關(guān)什么是動態(tài)mybatis對sql語句進(jìn)行靈活操作,通過表達(dá)式進(jìn)行判斷,對sql進(jìn)行靈活拼接、組裝需statementsql測試代sql片需將上邊實
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版高速公路服務(wù)區(qū)水電設(shè)施維修保養(yǎng)合同3篇
- 二零二五版雞舍租賃與農(nóng)業(yè)生態(tài)補(bǔ)償機(jī)制合同3篇
- 2025年度行政合同中行政主體特權(quán)實施與責(zé)任分配合同4篇
- 二零二五版?zhèn)€人教育貸款合同之延期還款及還款計劃調(diào)整范本3篇
- 2025年度留置車輛維修材料借款合同4篇
- 2025年文化創(chuàng)意產(chǎn)業(yè)園區(qū)文印室承包經(jīng)營協(xié)議3篇
- 二零二五年電子商務(wù)技能賽試題保密與知識產(chǎn)權(quán)歸屬協(xié)議3篇
- 創(chuàng)新教育模式下的自然課堂互動游戲研究報告
- 二零二五年度高端服裝品牌店員工就業(yè)合同范本3篇
- 醫(yī)療器械協(xié)議書
- 申根簽證申請表模板
- 企業(yè)會計準(zhǔn)則、應(yīng)用指南及附錄2023年8月
- 諒解書(標(biāo)準(zhǔn)樣本)
- 2022年浙江省事業(yè)編制招聘考試《計算機(jī)專業(yè)基礎(chǔ)知識》真題試卷【1000題】
- 認(rèn)養(yǎng)一頭牛IPO上市招股書
- GB/T 3767-2016聲學(xué)聲壓法測定噪聲源聲功率級和聲能量級反射面上方近似自由場的工程法
- GB/T 23574-2009金屬切削機(jī)床油霧濃度的測量方法
- 西班牙語構(gòu)詞.前后綴
- 動物生理學(xué)-全套課件(上)
- 河北省衡水市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細(xì)
- DB32-T 2665-2014機(jī)動車維修費(fèi)用結(jié)算規(guī)范-(高清現(xiàn)行)
評論
0/150
提交評論