Mybatis框架(4)-MyBatis的注解開發(fā)、方法多參數傳遞使用-@Param注解_第1頁
Mybatis框架(4)-MyBatis的注解開發(fā)、方法多參數傳遞使用-@Param注解_第2頁
Mybatis框架(4)-MyBatis的注解開發(fā)、方法多參數傳遞使用-@Param注解_第3頁
Mybatis框架(4)-MyBatis的注解開發(fā)、方法多參數傳遞使用-@Param注解_第4頁
Mybatis框架(4)-MyBatis的注解開發(fā)、方法多參數傳遞使用-@Param注解_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Mybatis框架(4)——MyBatis的注解開發(fā)、?法多參數傳遞使?-@Param注解。。。Mybatis框架MyBatis的注解開發(fā)MyBatis的映射配置除了使?xml配置以外,還?持注解配置sql語句問題:為什么有了xml配置還有注解配置答:MyBatis的注解開發(fā)更簡潔,只需要將對應的SQL語句的注解標注對應的功能?法上即可,直接連XxxMapper.xml映射?件都可以省略了本?注解開發(fā)就是Java配置的?種趨勢,后期學習SpringBoot時候,發(fā)現全部?純注解配置MyBatis提供了下?注解進?映射?件配置@Select查詢數據注解@Insert插?數據注解@Delete刪除數據注解@Update修改數據注解@Options選項配置@Results?動映射配置@Result:@results中的具體的某?列的映射信息配置案例代碼

packagecn.xc.mybatis.mapper;importjava.util.List;importorg.apache.ibatis.annotations.Delete;importorg.apache.ibatis.annotations.Insert;importorg.apache.ibatis.annotations.Result;importorg.apache.ibatis.annotations.Results;importorg.apache.ibatis.annotations.Select;importorg.apache.ibatis.annotations.Update;importcn.xc.mybatis.pojo.User;publicinterfaceUserMapper{@Insert("insertintouser(name,age,password)values(#{name},#{age},#{password})")intinsert(Useruser);//單?查詢@Select("selectidt_id,namet_name,passwordt_password,aget_agefromuserwhereid=#{id}")@Results({@Result(id=true,column="id",property="id"),@Result(column="t_name",property="name"),@Result(column="t_password",property="password"),@Result(column="t_age",property="age")})UserselectByPrimaryKey(Integerid);//多?查詢@Select("selectidt_id,namet_name,passwordt_password,aget_agefromuser")@Results({@Result(id=true,column="id",property="id"),@Result(column="t_name",property="name"),@Result(column="t_password",property="password"),@Result(column="t_age",property="age")})List<User>selectList();//刪除操作@Delete("deletefromuserwhereid=#{id}")intdeleteByPrimaryKey(Integerid);//更新操作@Update("updateusersetname=#{name},password=#{password},age=#{age}whereid=#{id}")intupdateByPrimaryKey(Useruser);}注解映射的配置<mappers><!---->配置映射?件<!--xml映射?件-->配置單個<!--<mapperresource="cn/xc/mybatis/mapper/UserMapper.xml"/>--><!---->配置單個映射接?<mapperclass="cn.xc.mybatis.mapper.UserMapper"/></mappers>?法多參數傳遞使?-@Param注解Mybatis默認情況下是不?持傳?多個參數的.只能傳??個參數.所謂的傳?參數指定是Mybatis操作()的傳?參數.?案1:將這些參數封裝到?個對象??(JavaBean/Map),再傳?.?案2:給參數設置?個@Param注解?持,?且多參數的類型要統(tǒng)?問題:為什么不?持多個參數?因為Java語法1.7以前.是不能通過反射技術獲得?法的參數名的.解決?案使?@Param參數注解案例代碼packagecn.xc.mybatis.mapper;importjava.util.Map;importorg.apache.ibatis.annotations.Param;importcn.xc.mybatis.pojo.User;publicinterfaceUserMapper{/***模擬登陸操作*@paramuser封裝有賬號密碼的User*@return查詢結果封裝的User對象對象*/Userlogin(@Param("username")Stringname,@Param("pwd")Stringpassword);/***模擬登陸操作*@paramuser封裝有賬號密碼的Map*@return查詢結果封裝的User對象集合*/Userlogin1(Map<String,Object>map);}測試代碼packagecn.xc.mybatis.test;importjava.util.HashMap;importjava.util.Map;importorg.apache.ibatis.session.SqlSession;importorg.junit.Test;importcn.xc.mybatis.mapper.UserMapper;importcn.xc.mybatis.pojo.User;importcn.xc.mybatis.utils.MyBatisUtil;publicclassUserMapperTest{@TestpublicvoidtestLogin()throwsException{//1.SqlSession創(chuàng)建對象SqlSessionsession=MyBatisUtil.openSession();//2.UserMapper創(chuàng)建映射接?的代理對象(接?不能直接創(chuàng)建對象,底層創(chuàng)建代理對象)UserMapperuserMapper=session.getMapper(UserMapper.class);//3.執(zhí)?登錄?法Useruser=userMapper.login("admin","123");System.out.println(user);//4.Session關閉session.close();}@TestpublicvoidtestLogin1()throwsException{//1.SqlSession創(chuàng)建對象SqlSessionsession=MyBatisUtil.openSession();//2.UserMapper創(chuàng)建映射接?的代理對象(接?不能直接創(chuàng)建對象,底層創(chuàng)建代理對象)UserMapperuserMapper=session.getMapper(UserMapper.class);//3.執(zhí)?登錄?法Map<String,Object>map=newHashMap<>();map.put("username","喬峰");map.put("pwd","123");Useruser=userMapper.login1(map);System.out.println(user);//4.Session關閉session.close();}}#{}與${}的區(qū)別在MyBatis框架中?持兩種OGNL語法#{}${}#{}基于JDBC的PreparedStatement類,SQL語句參數使??占位符,在運?階段動態(tài)設置參數,但是?不能作為表名.預編譯語句對象的SQL語句只能操作DML和DQL語句,不能操作DDL語句1.#{}表?設置預編譯的參數,就是?的參數,所以如果要不固定的表名不能使?#{},只能使?${}2.KaTeXparseerror:Expected'EOF',got'#'atposition27:…接把參數拼接到SQL語句中.?#{]是使??來代替.所以{}是不安全的.3.KaTeXparseerror:Expected'EOF',got'#'atposition14:{}只能獲得參數池的值,?#{}可以獲得?法的參數值,也可…{}獲得參數的值,這個參數必須要加上@Param如果?必要情況,不要使?${}問題:那么${}有什么?呢?答:注意基于JDBC的接?的原來的表名是不可以使??的,?只能?于傳?的參數。如果操作的涉及表名這些?參數的數據時,需要使?${}刪除案例代碼publicinterfaceUserMapper{/***動態(tài)刪除數據庫中指定表名*@paramtableName表名*@return*/intdropTable(@Param("tableName")StringtableName);}<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN""/dtd/mybatis-3-mapper.dtd"><!--映射配置namespace:命名空間,通俗講,每個映射?件唯?的標識名稱--><mappernamespace="cn.xc.mybatis.mapper.UserMapper"><!--#{}不能使?在表名操作使?--><deleteid="dropTable"parameterType="String"><!--droptable#{tableName}-->droptable${tableName}</delete></mapper>打印效果使?#{}使?此種?法?法刪除數據庫表使?${}總結MyBatis持久層框架的基本使?1.為什么要學習某?個框架?(1)以前有類似功能,在編寫代碼有什么缺陷,在開發(fā)中帶來什么不變(2)如:原?的JDBC所有操作都要開發(fā)者??處理,?常繁瑣2.尋找能夠解決此類問題的框架(1)持久層解決?案①MyBatis-?前企業(yè)主流1.半?動框架a.開發(fā)者可以?定義SQL語句,但是不?寫實現(交給框架做),?較靈活②Hibernate–早期項??的?較多2.全?動框架a.直接操作對象,開發(fā)者沒有辦法直接控制sql語句③JPAJava官?退出的?種持久化API3.由Hibernate框架來實現④SpringData-JPA4.?持多種類型的數據持久化解決?案a.關系數據庫(MySQL,Oracle)b.?關系型數據庫(NoSQL,MongDB,Redis)c.操作?數據框架⑤Spring框架的jdbctemplate5.是Spring框架的?個功能,只是?jdbc強?點點,對jdbc?了簡單的封裝(2)Web層解決?案-Servlet不好?①SpringMVC-直接Spring框架的?個模塊(組件)-企業(yè)主流②Struts2-前?年?的多,有嚴重bug③Struts-古?的3.MyBatis框架學習?案(1)了解框架的特性(2)框架的?門案例①直接建議參考官??檔-??資料1.需要有?定的編碼基礎②論壇博客③?師授課4.具體學習步驟(1)框架執(zhí)?流程①對框架執(zhí)?圖解分析(2)具體分布細節(jié)-環(huán)境準備①創(chuàng)建項?導?依賴包②準備主配置配置?件mybatis-config.xm

溫馨提示

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

評論

0/150

提交評論