亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MyBatis輸入映射和輸出映射實(shí)例詳解

 更新時(shí)間:2017年02月14日 11:41:21   作者:精品唯居  
mapper.xml是我們配置操作數(shù)據(jù)庫(kù)的sql語(yǔ)句的地方.這篇文章主要介紹了MyBatis輸入映射和輸出映射實(shí)例詳解,需要的朋友可以參考下

什么是 MyBatis ?

MyBatis 是支持定制化 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射的優(yōu)秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以對(duì)配置和原生Map使用簡(jiǎn)單的 XML 或注解,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄。

我們知道,mapper.xml是我們配置操作數(shù)據(jù)庫(kù)的sql語(yǔ)句的地方。其中每個(gè)sql語(yǔ)句對(duì)應(yīng)著一個(gè)方法,每個(gè)方法都有自己的輸入輸出參數(shù)類(lèi)型。那么這些類(lèi)型都是怎么配置的呢?今天我們來(lái)一起學(xué)習(xí)下。

         輸入映射

         首先是輸入類(lèi)型,輸入類(lèi)型分為以下幾種:1.基本類(lèi)型。2.pojo對(duì)象類(lèi)型。3.pojo包裝對(duì)象。所謂的包裝對(duì)象,可以理解為,一個(gè)對(duì)象里面包含著另外一個(gè)對(duì)象。

         簡(jiǎn)單類(lèi)型

          簡(jiǎn)單輸入類(lèi)型,比較簡(jiǎn)單。在傳入?yún)?shù)的時(shí)候,直接將參數(shù)類(lèi)型配置到parameterType中,代碼如下:

 <select id="findUserById" parameterType="int" resultType="cn.itcast.pojo.User">
 SELECT * FROM user where id=#{id}
 </select>

        其中的sql語(yǔ)句內(nèi)的占位符或者拼接符中的內(nèi)容可以隨意書(shū)寫(xiě),沒(méi)有實(shí)際意義。不過(guò)建議最好見(jiàn)名知意。以便于閱讀。

         pojo對(duì)象

         如果傳入的是一個(gè)對(duì)象的話(huà),那么情況就稍有不同了。除了傳入類(lèi)型需要是對(duì)象的類(lèi)型(可以直接寫(xiě)類(lèi)的全路徑,也可以通過(guò)在sqlConfig.xml中配置別名的方式,配置類(lèi)的別名)。還需要注意的是在sql語(yǔ)句的占位符上也需要將我們的內(nèi)容對(duì)應(yīng)我們的對(duì)象的屬性值。代碼如下:

<select id="findUserByUserName" parameterType="cn.itcast.pojo.User" resultType="cn.itcast.pojo.User">
 select * from user where username like'%${username}%'
</select>

         這里的username必須對(duì)應(yīng)User類(lèi)中的屬性。也就是說(shuō),在User類(lèi)中必須有username的屬性。而且我們?cè)趥魅雲(yún)?shù)的時(shí)候,需要將user對(duì)象的username賦值。用于被mybatis框架解析。

          在sqlConfig.xml中配置別名的方法:  

<!-- 自定義別名 -->
 <typeAliases>
 <!-- 給單個(gè)pojo起別名: type:pojo的全路徑名稱(chēng), alias:別名 -->
<!-- <typeAlias type="cn.itcast.pojo.User" alias="user"/> -->
 <!-- 使用包掃描的方式將整個(gè)包下面的pojo起別名 
  別名就是類(lèi)名, 不區(qū)分大小寫(xiě), 建議按照java的命名規(guī)則來(lái)寫(xiě)
 -->
 <package name="cn.itcast.pojo"/>
 </typeAliases>

         pojo包裝對(duì)象

         如果傳入對(duì)象是一個(gè)包含有另外一個(gè)對(duì)象的對(duì)象,也就是說(shuō)傳入對(duì)象是一個(gè)包裝對(duì)象的時(shí)候,我們?cè)撛趺崔k呢?其實(shí)也差不多,就是將占位符或者連接符中的值改為對(duì)象.屬性名具體代碼如下:

         首先是pojo對(duì)象的代碼,我們可以看出,整個(gè)user對(duì)象都作為了queryVo對(duì)象的一個(gè)屬性值了,其字段名稱(chēng)為user:

 package cn.itcast.pojo;
public class QueryVo {
 private User user;
 public User getUser() {
 return user;
 }
 public void setUser(User user) {
 this.user = user;
 }
}

         然后是我們的映射文件,其中的${user.userneme}中,user和我們的QueryVo類(lèi)中的user屬性名稱(chēng)一致,而username對(duì)應(yīng)的是User類(lèi)中的username字段:

<select id="findUserByVo" parameterType="cn.itcast.pojo.QueryVo" resultType="cn.itcast.pojo.User">
 select * from user where username like'%${user.username}%' and sex =#{user.sex}
</select>

        輸出映射

         輸出映射的配置和輸入映射基本一致。首先是簡(jiǎn)單類(lèi)型,mybatis中只有一種情況可以返回簡(jiǎn)單類(lèi)型,那就是我們的sql語(yǔ)句返回值只有一條的時(shí)候??梢苑祷睾?jiǎn)單類(lèi)型。

         還有就是我們的pojo類(lèi)型。我們的mybatis可以將返回的數(shù)據(jù),封裝成為一個(gè)pojo對(duì)象,但是,pojo的對(duì)象屬性必須和我們的返回值的字段名一致。才可以封裝進(jìn)去。如果不一致仍然想封裝,那么,就需要指定其對(duì)應(yīng)關(guān)系。具體代碼及注釋如下:

<!-- 這里的userListResultMap對(duì)應(yīng)的是resultMap的唯一標(biāo)示符 -->
 <select id="findUserByVo" parameterType="cn.itcast.pojo.QueryVo" resultMap="userListResultMap">
 select * from user where username like'%${user.username}%' and sex =#{user.sex}
 </select>
 <!-- 這里的cn.itcast.pojo.User代表的是User類(lèi)也就是最終生成對(duì)象的類(lèi)型;userListResultMap是這個(gè)resultMap的唯一標(biāo)示符 -->
 <resultMap type="cn.itcast.pojo.User" id="userListResultMap">
 <!-- 這里的id_是從數(shù)據(jù)庫(kù)中查出的數(shù)據(jù)字段名稱(chēng)是主鍵;而id是我們的User對(duì)象中的屬性 -->
 <id column="id_" property="id"/>
 <!-- 這里的result指的是其他字段 -->
 <result column="userneme_" property="username"/>
 </resultMap>

以上所述是小編給大家介紹的MyBatis輸入映射和輸出映射實(shí)例詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java設(shè)計(jì)模式編程中的工廠(chǎng)方法模式和抽象工廠(chǎng)模式

    Java設(shè)計(jì)模式編程中的工廠(chǎng)方法模式和抽象工廠(chǎng)模式

    這篇文章主要介紹了Java設(shè)計(jì)模式編程中的工廠(chǎng)方法模式和抽象工廠(chǎng)模式,設(shè)計(jì)模式的建立有利于團(tuán)隊(duì)協(xié)作時(shí)代碼的共同維護(hù),需要的朋友可以參考下
    2016-01-01
  • SpringCloud之熔斷器Hystrix的實(shí)現(xiàn)

    SpringCloud之熔斷器Hystrix的實(shí)現(xiàn)

    這篇文章主要介紹了SpringCloud之熔斷器Hystrix的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Java 類(lèi)與對(duì)象重難點(diǎn)詳解

    Java 類(lèi)與對(duì)象重難點(diǎn)詳解

    類(lèi)(class)和對(duì)象(object)是兩種以計(jì)算機(jī)為載體的計(jì)算機(jī)語(yǔ)言的合稱(chēng)。對(duì)象是對(duì)客觀(guān)事物的抽象,類(lèi)是對(duì)對(duì)象的抽象。類(lèi)是一種抽象的數(shù)據(jù)類(lèi)型
    2021-11-11
  • springboot中如何將logback切換為log4j2

    springboot中如何將logback切換為log4j2

    springboot默認(rèn)使用logback作為日志記錄框架,常見(jiàn)的日志記錄框架有l(wèi)og4j、logback、log4j2,這篇文章我們來(lái)學(xué)習(xí)怎樣將logbak替換為log4j2,需要的朋友可以參考下
    2023-06-06
  • Java字節(jié)碼指令集的使用詳細(xì)

    Java字節(jié)碼指令集的使用詳細(xì)

    本篇文章對(duì)Java字節(jié)碼指令集的使用進(jìn)行了詳細(xì)的介紹。需要的朋友參考下
    2013-05-05
  • Jenkins安裝與配置及漢化過(guò)程

    Jenkins安裝與配置及漢化過(guò)程

    這篇文章主要介紹了Jenkins安裝與配置及漢化過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 淺談一下maven優(yōu)缺點(diǎn)及使用和特點(diǎn)

    淺談一下maven優(yōu)缺點(diǎn)及使用和特點(diǎn)

    這篇文章主要介紹了淺談一下maven優(yōu)缺點(diǎn)及使用和特點(diǎn),一個(gè)項(xiàng)目管理工具軟件,那么maven項(xiàng)目有什么優(yōu)缺點(diǎn)呢,讓我們一起來(lái)看看吧
    2023-03-03
  • 淺談Java三目運(yùn)算

    淺談Java三目運(yùn)算

    本文給大家主要介紹的是java中三目運(yùn)算的詳細(xì)介紹,并附上2個(gè)示例,希望對(duì)大家理解三目運(yùn)算能夠有所幫助。
    2015-03-03
  • Java中使用@CrossOrigin和Proxy解決跨域問(wèn)題詳解

    Java中使用@CrossOrigin和Proxy解決跨域問(wèn)題詳解

    這篇文章主要介紹了Java中使用@CrossOrigin和Proxy解決跨域問(wèn)題詳解,在Web開(kāi)發(fā)中,如果前端頁(yè)面和后端接口不在同一個(gè)域名下,就會(huì)發(fā)生跨域請(qǐng)求的問(wèn)題,同源策略是瀏覽器的一種安全策略,它限制了來(lái)自不同源的客戶(hù)端腳本在瀏覽器中運(yùn)行時(shí)的交互,需要的朋友可以參考下
    2023-12-12
  • Springboot使用redisson實(shí)現(xiàn)分布式鎖的代碼示例

    Springboot使用redisson實(shí)現(xiàn)分布式鎖的代碼示例

    在實(shí)際項(xiàng)目中,某些場(chǎng)景下可能需要使用到分布式鎖功能,那么實(shí)現(xiàn)分布式鎖有多種方式,常見(jiàn)的如mysql分布式鎖、zookeeper分布式鎖、redis分布式鎖,本文介紹springboot如何使用redisson實(shí)現(xiàn)分布式鎖,需要的朋友可以參考下
    2023-06-06

最新評(píng)論