mybatis第一天課堂筆記和springmvc通過訂單商品案例驅(qū)動_第1頁
mybatis第一天課堂筆記和springmvc通過訂單商品案例驅(qū)動_第2頁
mybatis第一天課堂筆記和springmvc通過訂單商品案例驅(qū)動_第3頁
mybatis第一天課堂筆記和springmvc通過訂單商品案例驅(qū)動_第4頁
mybatis第一天課堂筆記和springmvc通過訂單商品案例驅(qū)動_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論