亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mybatis模糊查詢及自動映射實現詳解

發布時間:2020-10-02 04:16:47 來源:腳本之家 閱讀:136 作者:yaominghui 欄目:編程語言

這篇文章主要介紹了Mybatis模糊查詢及自動映射實現詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

Mybatis的模糊查詢

1. 參數中直接加入%%

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標簽

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的自動映射

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

當 sql 語句查詢出結果時,如果對應輸出配置的 Java 包裝類中有相同名稱的屬性,且擁有 set 方法,則該結果就會被自動映射。

0x01:原理

MyBatis 的自動映射功能是建立在 resultMap 基礎之上的。resultType 屬性自動映射的原理是,當 sql 映射輸出配置為 resultType 時,MyBatis 會生成一個空的 resultMap,然后指定這個 resultMap 的 type 為指定的 resultType 的類型,接著 MyBatis 檢測查詢結果集中字段與指定 type 類型中屬性的映射關系,對結果進行自動映射。

在 MyBatis 全局配置文件中,在 setting 標簽內設置自動映射模式:

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

0x02:配置

在 MyBatis 中,自動映射有三種模式,分別是 NONE、PARTIAL、FULL。其中 NONE 表示不啟用自動映射,PARTIAL 表示只對非嵌套的 resultMap 進行自動映射,FULL 表示對所有的 resultMap 都進行自動映射。默認的自動映射模式為 PARTIAL。

0x03:拓展

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

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

<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 類中,包含了手動映射的 username 屬性和自動映射的 id、email 屬性。

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

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

當配置了 autoMapping 屬性后,就會忽略全局配置文件中的 autoMappingBehavior 映射模式。

0x04:關于 FULL

關于 FULL 模式,應該謹慎使用,該模式不管 resultMap 是嵌套的還是非嵌套的,都會進行自動映射,這可能會造成某些嵌套屬性與查詢結果的字段名一致而誤被自動映射,例如以下示例:

<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>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吴川市| 游戏| 平阳县| 苍溪县| 上犹县| 乾安县| 山丹县| 丹凤县| 安溪县| 中宁县| 玉环县| 观塘区| 灌南县| 六枝特区| 江阴市| 河源市| 伊通| 武川县| 尉氏县| 江安县| 莎车县| 淮北市| 高密市| 宜兰县| 宁海县| 永济市| 乌拉特前旗| 南宫市| 津南区| 康马县| 北碚区| 许昌县| 开封县| 河北省| 乌鲁木齐市| 甘谷县| 汉沽区| 屏南县| 扎囊县| 宜黄县| 墨竹工卡县|