《JavaEE框架技術》課件02MyBatis 基礎操作-簡單查詢_第1頁
《JavaEE框架技術》課件02MyBatis 基礎操作-簡單查詢_第2頁
《JavaEE框架技術》課件02MyBatis 基礎操作-簡單查詢_第3頁
《JavaEE框架技術》課件02MyBatis 基礎操作-簡單查詢_第4頁
《JavaEE框架技術》課件02MyBatis 基礎操作-簡單查詢_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1第2章Mybatis基礎操作框架程序設計(Java)2學習目標mybatis的簡單查詢1mybatis的增加、刪除、修改操作2mybatis的事務管理331mybatis的簡單查詢-目錄1)數(shù)據(jù)庫連接信息放在單獨的properties文件中與mybatis-config.xml文件分離2)帶參數(shù)的查詢3)自定義查詢的結果類型(不使用默認的hashmap)41.1數(shù)據(jù)庫連接信息單獨存放例子1:改造第一章例子2:查詢用戶信息表user所有記錄表名user(用戶信息表)字段2個username用戶名字符串10位主鍵password密碼字符串6位非空要求用mybatis框架編程,mysql數(shù)據(jù)庫,查詢該表的所有記錄并輸出,其中數(shù)據(jù)庫的連接信息放在單獨的屬性文件properties中51.1數(shù)據(jù)庫連接信息單獨存放在src目錄下創(chuàng)建一個perties文件文件中填寫如下數(shù)據(jù)庫連接信息jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/frame?characterEncoding=utf8jdbc.username=rootjdbc.password=12345661.1數(shù)據(jù)庫連接信息單獨存放修改以前例子中的mybatis-config.xml文件作2個修改:關聯(lián)屬性文件perties的配置,在<configuration>下加入<propertiesresource="perties"></properties>71.1數(shù)據(jù)庫連接信息單獨存放修改以前例子中的mybatis-config.xml文件作2個修改:在<dataSource>標簽里邊4個<property>修改為如下代碼:<propertyname="driver"value="${jdbc.driver}"/><propertyname="url"value="${jdbc.url}"/><propertyname="username"value="${jdbc.username}"/><propertyname="password"value="${jdbc.password}"/>81.1數(shù)據(jù)庫連接信息單獨存放運行與感悟最后調(diào)試運行,會發(fā)現(xiàn)結果與第一章的例子2一樣,但數(shù)據(jù)庫的配置被單獨放在了一個單獨的properties文件中。適用性:在mybatis基本配置文件比較復雜的情況下,且數(shù)據(jù)庫信息會多次變動,那么將數(shù)據(jù)庫連接信息單獨存放,便于修改調(diào)試,提高系統(tǒng)的健壯性和穩(wěn)定性。91.2帶參數(shù)查詢例子2:改造例子1:查詢用戶信息表user中用戶名為“張三”的記錄表名user(用戶信息表)字段2個username用戶名字符串10位主鍵password密碼字符串6位非空要求用mybatis框架編程,mysql數(shù)據(jù)庫,查詢該表用戶名為張三的記錄并輸出,其中數(shù)據(jù)庫的連接信息放在單獨的屬性文件properties中101.2帶參數(shù)查詢在sql語句配置文件UserMapper.xml中加入一個新的帶參數(shù)的sql語句配置:<selectid="findUserByUsername"parameterType="String"resultType="hashmap">SELECT*FROMuserwhereusername=#{xxx}</select>說明加入一個select標簽,與前面例子并列屬性parameterType=“String”表示sql語句有參數(shù),類型為字符串username=#{xxx}表示用戶名的值是來自一個變量xxx,這個變量值直接從java代碼中傳入,變量名任意命名111.2帶參數(shù)查詢在測試類中修改執(zhí)行sql語句的代碼//3.執(zhí)行sql語句List<Map>list=sqlSession.selectList("findUserByUsername","張三");說明:第一個參數(shù)對應上頁sql配置中的id,第二個參數(shù)對應sql語句中的參數(shù)xxx,直接傳值給xxx然后運行調(diào)試,得到一條張三的記錄。121.2帶參數(shù)查詢例子2’:改造例子2:查詢用戶信息表user中用戶名為“張三”、密碼為“111”的記錄表名user(用戶信息表)字段2個username用戶名字符串10位主鍵password密碼字符串6位非空要求用mybatis框架編程,mysql數(shù)據(jù)庫,查詢該表用戶名為張三,密碼為111的記錄并輸出,其中數(shù)據(jù)庫的連接信息放在單獨的屬性文件properties中分析:比例子2多了一個參數(shù),會有什么不同?131.2帶參數(shù)查詢多參數(shù)查詢的兩種處理方式: ——使用map傳遞參數(shù) ——使用自定義實體類傳遞參數(shù)141.2帶參數(shù)查詢-使用map傳遞參數(shù)在sql語句配置文件UserMapper.xml中加入一個新的帶參數(shù)的sql語句配置:<selectid="findUserByMap"parameterType="hashmap"resultType="hashmap">SELECT*FROMuserwhereusername=#{username}andpassword=#{password}</select>說明加入一個select標簽,與前面例子并列屬性parameterType=“hashmap”表示sql語句有參數(shù),參數(shù)類型為hashmapusername=#{username}表示用戶名的值是來自map中的username鍵對應的值password=#{password}與username類似151.2帶參數(shù)查詢-使用map傳遞參數(shù)在測試類中修改執(zhí)行sql語句的代碼//3.執(zhí)行sql語句Map<String,Object>cnd=newHashMap<>(); cnd.put("username","王五"); cnd.put("password","222");List<Map>list=sqlSession.selectList("findUserByMap",cnd);說明:第一個參數(shù)對應上頁sql配置中的id,第二個參數(shù)對應sql語句中的參數(shù)map然后運行調(diào)試,得到一條張三的記錄。161.2帶參數(shù)查詢-使用自定義實體類傳遞參數(shù)在sql語句配置文件UserMapper.xml中加入一個新的帶參數(shù)的sql語句配置:<selectid="findUserByUsernameAndPassword"parameterType="domain.User"resultType="hashmap">SELECT*FROMuserwhereusername=#{username}andpassword=#{password}</select>說明加入一個select標簽,與前面例子并列屬性parameterType=“domain.User”表示sql語句有參數(shù),類型為一個存放在domain包中的User類username=#{username}表示用戶名的值是來自User類中的username屬性,從java代碼中傳入的是User類的對象,然后通過對象的get方法得到對應的username的值,password=#{password}與username類似171.2帶參數(shù)查詢-使用自定義實體類傳遞參數(shù)在domain包下創(chuàng)建一個用戶信息類User(每一個屬性都要有get、set方法):publicclassUser{Stringusername;//用戶名Stringpassword;//密碼publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}}181.2帶參數(shù)查詢-使用自定義實體類傳遞參數(shù)在測試類中修改執(zhí)行sql語句的代碼//3.執(zhí)行sql語句Useruser=newUser();user.setUsername("張三");user.setPassword("111");List<Map>list=sqlSession.selectList("findUserByUsernameAndPassword",user);說明:第一個參數(shù)對應上頁sql配置中的id,第二個參數(shù)對應sql語句中的參數(shù)User然后運行調(diào)試,得到一條張三的記錄。191.3自定義查詢結果例子3:改造例子2’:查詢用戶信息表user中用戶名為“張三”、密碼為“111”的記錄表名user(用戶信息表)字段2個username用戶名字符串10位主鍵password密碼字符串6位非空要求用mybatis框架編程,mysql數(shù)據(jù)庫,查詢該表用戶名為張三,密碼為111的記錄,把查詢出來的用戶名輸出,其中數(shù)據(jù)庫的連接信息放在單獨的屬性文件properties中分析:比例子2’輸出少一個密碼,會有什么問題?201.3自定義查詢結果在sql語句配置文件UserMapper.xml中加入一個新的帶參數(shù)的sql語句配置:<selectid="findNameByUserinfo"parameterType=“domain.User"resultType=“domain.User">SELECT*FROMuserwhereusername=#{username}andpassword=#{password}</select>說明加入一個select標簽,與前面例子并列resultType=“domain.User”表示返回不再是默認的hashmap,而是把數(shù)據(jù)封裝到domain.User類的對象中211.3自定義查詢結果在測試類中修改執(zhí)行sql語句的代碼//3.執(zhí)行sql語句Useruser=newUser();user.setUsername("張三");user.setPassword("111");List<User>list=sqlSession.selectList("findNameByUserinfo",user);//4.輸出結果for(Useruser2:list){System.out.println(user2.getUsername());}說明:返回不再是map而是User,則可以使用對應的get方法得到用戶名,查詢過程中結果集List對象中的User是系統(tǒng)自動封裝(調(diào)用User類的set方法,若沒有set方法則會報錯)運行調(diào)試,得到一條張三的記錄。思考:該代碼是不是可以不用循環(huán)?221.3自定義查詢結果【改進】在測試類中修改執(zhí)行sql語句的代碼//3.執(zhí)行sql語句Useruser=newUser();user.setUsername("張三");user.setPassword("111");//List<User>list=sqlSession.selectList("findNameByUserinfo",user);Useruser2=sqlSession.selectOne(“findNameByUserinfo",user);//4.輸出結果//for(Useruser2:list){System.out.println(user2.getUsername());//}說明:sqlSession.selectOne是查詢一條記錄,當然程序員必須確定查詢結果最多一條。運行調(diào)試:結果應該完全一樣231.4作業(yè)查詢學生

溫馨提示

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

評論

0/150

提交評論