最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis模糊查詢及自動(dòng)映射實(shí)現(xiàn)詳解

 更新時(shí)間:2020年02月22日 11:16:14   投稿:yaominghui  
這篇文章主要介紹了Mybatis模糊查詢及自動(dòng)映射實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Mybatis模糊查詢及自動(dòng)映射實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

Mybatis的模糊查詢

1. 參數(shù)中直接加入%%

1
2
3
4
5
6
7
8
9
param.setUsername("%CD%");
param.setPassword("%11%");

<select id="selectPersons" resultType="person" parameterType="person">
select id,sex,age,username,password from person where true
<if test="username!=null"> AND username LIKE #{username}</if>
<if test="password!=null">AND password LIKE #{password}</if>

</select>
2. bind標(biāo)簽

1
2
3
4
5
6
<select id="selectPersons" resultType="person" parameterType="person">
<bind name="pattern" value="'%' + _parameter.username + '%'" />
select id,sex,age,username,password
from person
where username LIKE #{pattern}
</select> 
3. CONCAT

1
where username LIKE concat(concat('%',#{username}),'%')
Mybatis的自動(dòng)映射

0x00:引子
在 MyBatis 的映射配置文件中,select 標(biāo)簽查詢配置結(jié)果集時(shí)使用過 resultType 屬性,當(dāng)在 resultType 中定義一個(gè) Java 包裝類時(shí),如果 sql 語句查詢的結(jié)果中有列名與該 Java 包裝類中的屬性名一致,則該字段就會(huì)被映射到該屬性上。這里用到的就是 MyBatis 的自動(dòng)映射功能,

當(dāng) sql 語句查詢出結(jié)果時(shí),如果對應(yīng)輸出配置的 Java 包裝類中有相同名稱的屬性,且擁有 set 方法,則該結(jié)果就會(huì)被自動(dòng)映射。

0x01:原理

MyBatis 的自動(dòng)映射功能是建立在 resultMap 基礎(chǔ)之上的。resultType 屬性自動(dòng)映射的原理是,當(dāng) sql 映射輸出配置為 resultType 時(shí),MyBatis 會(huì)生成一個(gè)空的 resultMap,然后指定這個(gè) resultMap 的 type 為指定的 resultType 的類型,接著 MyBatis 檢測查詢結(jié)果集中字段與指定 type 類型中屬性的映射關(guān)系,對結(jié)果進(jìn)行自動(dòng)映射。

在 MyBatis 全局配置文件中,在 setting 標(biāo)簽內(nèi)設(shè)置自動(dòng)映射模式:

	
<setting name="autoMappingBehavior" value="PARTIAL"/>

0x02:配置

在 MyBatis 中,自動(dòng)映射有三種模式,分別是 NONE、PARTIAL、FULL。其中 NONE 表示不啟用自動(dòng)映射,PARTIAL 表示只對非嵌套的 resultMap 進(jìn)行自動(dòng)映射,F(xiàn)ULL 表示對所有的 resultMap 都進(jìn)行自動(dòng)映射。默認(rèn)的自動(dòng)映射模式為 PARTIAL。

0x03:拓展

在 sql 查詢結(jié)果中,如果只有部分字段與輸入配置類型中的屬性名稱不一樣,則可以僅在 resultMap 中指定不一樣的字段對應(yīng)的輸出類型的屬性,其他的則會(huì)直接進(jìn)行自動(dòng)映射。

例如以下示例,Java 包裝類中用戶名屬性為 username,而在 t_user 表中用戶名的字段名為 name,這里需要手動(dòng)映射 name 字段,其他的屬性可以通過默認(rèn)的自動(dòng)映射機(jī)制來映射:

<resultMap type="cn.com.mybatis.pojo.User" id="UserResult">
<result property="username" column="name"/>
</resultMap>
<select id="findUserById" parameterType="java.lang.Long" resultMap="UserResult">
select id,name,email from t_user where id=#{id}
</select>

在 User 類中,包含了手動(dòng)映射的 username 屬性和自動(dòng)映射的 id、email 屬性。

如果在某些 resultMap 中不想使用自動(dòng)映射,則可以單獨(dú)在該 resultMap 中設(shè)置 autoMapping 的屬性為 false,此時(shí)該 resultMap 僅映射指定的映射字段:

<select id="findUserById" parameterType="java.lang.Long" resultMap="UserResult" autoMapping="false">
select id,name,email from t_user where id=#{id}
</select>

當(dāng)配置了 autoMapping 屬性后,就會(huì)忽略全局配置文件中的 autoMappingBehavior 映射模式。

0x04:關(guān)于 FULL

關(guān)于 FULL 模式,應(yīng)該謹(jǐn)慎使用,該模式不管 resultMap 是嵌套的還是非嵌套的,都會(huì)進(jìn)行自動(dòng)映射,這可能會(huì)造成某些嵌套屬性與查詢結(jié)果的字段名一致而誤被自動(dòng)映射,例如以下示例:

<resultMap id="replyResult" type="cn.com.mybatis.pojo.Reply">
<association property="user" resultMap="userResult"/>
</resultMap>
 
<resultMap id="userResult" type="cn.com.mybatis.pojo.User">
<result property="username" column="name"/>
</resultMap>
 
<select id="queryReplyInfo" parameterType="java.lang.Long" resultMap="replyResult">
select R.id,R.title,R.info,U.name form
reply R left join t_user U on R.user_id = U.id where R.id=#{id}
</select>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳談Spring是否支持對靜態(tài)方法進(jìn)行Aop增強(qiáng)

    詳談Spring是否支持對靜態(tài)方法進(jìn)行Aop增強(qiáng)

    這篇文章主要介紹了Spring是否支持對靜態(tài)方法進(jìn)行Aop增強(qiáng),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring Boot利用Java Mail實(shí)現(xiàn)郵件發(fā)送

    Spring Boot利用Java Mail實(shí)現(xiàn)郵件發(fā)送

    這篇文章主要為大家詳細(xì)介紹了Spring Boot利用Java Mail實(shí)現(xiàn)郵件發(fā)送,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • SpringSecurity的防Csrf攻擊實(shí)現(xiàn)代碼解析

    SpringSecurity的防Csrf攻擊實(shí)現(xiàn)代碼解析

    這篇文章主要介紹了SpringSecurity的防Csrf攻擊實(shí)現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Spring?Security?登錄時(shí)添加圖形驗(yàn)證碼實(shí)現(xiàn)實(shí)例

    Spring?Security?登錄時(shí)添加圖形驗(yàn)證碼實(shí)現(xiàn)實(shí)例

    這篇文章主要為大家介紹了Spring?Security?登錄時(shí)添加圖形驗(yàn)證碼實(shí)現(xiàn)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • feign遠(yuǎn)程調(diào)用無法傳遞對象屬性405的問題

    feign遠(yuǎn)程調(diào)用無法傳遞對象屬性405的問題

    這篇文章主要介紹了feign遠(yuǎn)程調(diào)用無法傳遞對象屬性405的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Linux安裝JDK兩種方式詳細(xì)教程(附圖)

    Linux安裝JDK兩種方式詳細(xì)教程(附圖)

    這篇文章主要給大家介紹了關(guān)于Linux安裝JDK兩種方式詳細(xì)教程的相關(guān)資料,Linux的使用相信大家都要用到j(luò)ava吧,在使用java前我們得先安裝jdk以及配置環(huán)境變量等工作,需要的朋友可以參考下
    2023-11-11
  • SpringBoot基于Actuator遠(yuǎn)程關(guān)閉服務(wù)

    SpringBoot基于Actuator遠(yuǎn)程關(guān)閉服務(wù)

    這篇文章主要介紹了SpringBoot基于Actuator遠(yuǎn)程關(guān)閉服務(wù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • springboot 之jpa高級查詢操作

    springboot 之jpa高級查詢操作

    這篇文章主要介紹了springboot 之jpa高級查詢操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • java中的this引用及對象構(gòu)造初始化

    java中的this引用及對象構(gòu)造初始化

    這篇文章主要介紹了java中的this引用及對象構(gòu)造初始化,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Application.yml的自定義屬性的讀取方式

    Application.yml的自定義屬性的讀取方式

    這篇文章主要介紹了Application.yml的自定義屬性的讀取方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論

雅江县| 玛沁县| 九龙城区| 六枝特区| 寻甸| 彩票| 炉霍县| 招远市| 平舆县| 咸丰县| 鸡东县| 博爱县| 凌云县| 图片| 屯昌县| 鄄城县| 克拉玛依市| 祁阳县| 海兴县| 扎鲁特旗| 长治县| 濮阳市| 嘉定区| 丰县| 焉耆| 临潭县| 当雄县| 梨树县| 涟水县| 广元市| 苗栗县| 崇义县| 始兴县| 申扎县| 师宗县| 资源县| 西丰县| 林甸县| 西乌珠穆沁旗| 图木舒克市| 舟山市|