Mybatis常用標(biāo)簽及屬性小結(jié)
一、常用標(biāo)簽、動(dòng)態(tài)Sql
select標(biāo)簽:
<select id="findUserById" parameterType="int" resultMap="userResultMap">
<include refid="sqlMsg"><property name="id" /></include>
</select>
<sql id="sqlMsg"> SELECT * FROM User WHERE ID = #{id}</sql>
<resultMap id="userResultMap" type="User">
<id property="id" column="user_id" />
<result property="username" column="user_name"/>
<result property="password" column="hashed_password"/>
</resultMap>
insert標(biāo)簽:
<insert id="addUser">
insert into User (id,name) values (#{id},#{name})
</insert>update標(biāo)簽:
<update id="updateUser">
update User set
username = #{username},
password = #{password}
where id = #{id}
</update>delete標(biāo)簽:
<delete id="deleteUser">
delete from User where id = #{id}
</delete>if標(biāo)簽:
<select id="findUser" >
SELECT * FROM User
WHERE state = 0
<if test="name != null and name!=''">
AND name = #{name}
</if>
</select>choose、when、otherwise(類似于switch)標(biāo)簽:
<select id="findUser" >
SELECT * FROM User WHERE state = 0
<choose>
<when test="name != null">
AND name like #{name}
</when>
<when test="age != null">
AND age = #{age}
</when>
<otherwise>
AND name like ''
</otherwise>
</choose>
</select>trim、where標(biāo)簽:
<select id="getUser" resultType="user">
select * from user
<trim prefix="where" prefixOverrides="and">
<if test="lastName != null">
name = #{name}
</if>
<if test="age != null">
and age = #{age}
</if>
<if test="phone != null">
and phone = #{phone}
</if>
</trim>
</select>foreach標(biāo)簽:
<select id="queryUsers" >
select * from user where id in
<foreach collection="array" item="item" open="(" separator="," close=")" index="index">
#{item}
</foreach>
</select>bind標(biāo)簽:
<!--使用bind元素進(jìn)行模糊查詢-->
<select id="queryUserByName" resultType="com.MyUser" parameterType= "com.MyUser">
select * from user
<trim prefix="where" prefixOverrides="and">
<if test="name != null">]
<bind name="bindName" value="'%' + name + '%'"/>
name like #{bindName}
</if>
</trim>
</select>selectKey標(biāo)簽:
<insert id="insert">
<selectKey keyProperty="id" resultType="int" order="BEFORE">
<!-- Oracle中用Sequence獲取主鍵 -->
<if test="_databaseId == 'oracle'">
select seq_users.nextval from dual
</if>
<!-- Mysql直接用sql查詢最大主鍵 -->
<if test="_databaseId == 'mysql'">
select(select max(u.id)+1 from t_user u)
</if>
</selectKey>
insert into t_user values (#{id}, #{name})
</insert>typeAliases標(biāo)簽
<typeAliases>
<typeAlias alias="myAuthor" type="com.bean.Author"/>
<typeAlias alias="myUser" type="com.bean.User"/>
<typeAlias alias="myCar" type="com.bean.Car"/>
<typeAlias alias="myHouse" type="com.bean.House"/>
</typeAliases>
<select id="selectUser" lang="myUser">
SELECT * FROM user
</select>二、常用標(biāo)簽屬性
select標(biāo)簽屬性:
id 必選屬性,綁定Sql語句與Mapper接口中的方法,。
parameterType 傳入?yún)?shù)的類全限定名或別名。MyBatis 可以通過類型處理器(TypeHandler)推斷出具體傳入語句的參數(shù),默認(rèn)值為未設(shè)置(unset)。
resultType 返回結(jié)果的類全限定名或別名。返回的是集合,則設(shè)置為集合包含的類型。
resultMap 對外部 resultMap 的命名引用。resultType 和 resultMap 之間只能同時(shí)使用一個(gè)。
flushCache 設(shè)為 true 后,只要語句被調(diào)用,會導(dǎo)致本地緩存和二級緩存被清空,默認(rèn)值(對select):false。
useCache 設(shè)為 true 后,將會導(dǎo)致本條語句的結(jié)果被二級緩存緩存起來,默認(rèn)值:對 select 元素為 true。
timeout 等待數(shù)據(jù)庫返回請求結(jié)果的秒數(shù)。默認(rèn)值為未設(shè)置(unset)(依賴數(shù)據(jù)庫驅(qū)動(dòng))。
fetchSize 給驅(qū)動(dòng)的建議值,讓驅(qū)動(dòng)程序每次批量返回的結(jié)果行數(shù)等于這個(gè)設(shè)置值。默認(rèn)不設(shè)置(unset)(依賴驅(qū)動(dòng))。
statementType 可選 STATEMENT、PREPARED、CALLABLE。讓 MyBatis 分別使用 Statement、PreparedStatement、CallableStatement,默認(rèn):PREPARED。
resultSetType 可選 FORWARD_ONLY、SCROLL_SENSITIVE、SCROLL_INSENSITIVE 或 DEFAULT(等價(jià)于 unset),默認(rèn)值為 unset (依賴數(shù)據(jù)庫驅(qū)動(dòng))。
databaseId 如果配置了數(shù)據(jù)庫廠商標(biāo)識(databaseIdProvider),MyBatis 會加載不帶 databaseId 屬性和帶有匹配當(dāng)前數(shù)據(jù)庫 databaseId 屬性的所有語句;如果帶和不帶的語句都有,不帶的會被忽略。
resultOrdered 僅針對嵌套結(jié)果 select 語句: 若為 true,將會假設(shè)包含了嵌套結(jié)果集或分組,返回一個(gè)主結(jié)果行時(shí),不會產(chǎn)生對前面結(jié)果集的引用。獲取嵌套結(jié)果集的時(shí)不至于內(nèi)存不夠,默認(rèn):false。
resultSets 僅適用于多結(jié)果集的情況。返回多個(gè)結(jié)果集并賦予每個(gè)結(jié)果集一個(gè)名稱,多個(gè)名稱之間以逗號分隔。insert、update、delete標(biāo)簽屬性:
id 必選屬性,綁定Sql語句與Mapper接口中的方法,。
parameterType 傳入?yún)?shù)的類全限定名或別名。MyBatis 可以通過類型處理器(TypeHandler)推斷出具體傳入語句的參數(shù),默認(rèn)值為未設(shè)置(unset)。
flushCache 設(shè)為 true 后,只要語句被調(diào)用,會導(dǎo)致本地緩存和二級緩存被清空,默認(rèn)值:(對 insert、update 和 delete 語句)true。
timeout 等待數(shù)據(jù)庫返回請求結(jié)果的秒數(shù)。默認(rèn)值為未設(shè)置(unset)(依賴數(shù)據(jù)庫驅(qū)動(dòng))。
statementType 可選 STATEMENT、PREPARED、CALLABLE。讓 MyBatis 分別使用 Statement、PreparedStatement、CallableStatement,默認(rèn):PREPARED。
databaseId 如果配置了數(shù)據(jù)庫廠商標(biāo)識(databaseIdProvider),MyBatis 會加載不帶 databaseId 屬性和帶有匹配當(dāng)前數(shù)據(jù)庫 databaseId 屬性的所有語句;如果帶和不帶的語句都有,不帶的會被忽略。
useGeneratedKeys (僅insert、update)會令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法來取出由數(shù)據(jù)庫內(nèi)部生成的主鍵,默認(rèn)值:false。
keyProperty (僅insert、update)指定能夠唯一識別對象的屬性,用 getGeneratedKeys 的返回值或 insert 語句的 selectKey 子元素設(shè)置它的值,默認(rèn):未設(shè)置(unset)??捎枚禾柗指舳鄠€(gè)屬性名。
keyColumn (僅insert、update)設(shè)置生成鍵值在表中的列名,當(dāng)主鍵列不是表中的第一列的時(shí)候,必須設(shè)置。如果生成列不止一個(gè),可用逗號分隔多個(gè)屬性名。trim標(biāo)簽屬性:
prefix 拼接前綴。
suffix 拼接后綴。
prefixOverrides 去除sql語句前面的關(guān)鍵字或者字符。
suffixOverrides 去除sql語句后面的關(guān)鍵字或者字符。foreach標(biāo)簽屬性:
collection 表示迭代集合的名稱,可以使用@Param注解指定。
item 必選參數(shù),集合中元素迭代時(shí)的別名。
index 在list和數(shù)組中,index是元素的序號,在map中,index是元素的key。
open foreach代碼的開始符號,一般是(和close=")"合用。
close foreach代碼的關(guān)閉符號,一般是)和open="("合用。
separator 元素之間的分隔符,separator=","會自動(dòng)在元素中間用“,“。selectKey標(biāo)簽屬性:
keyProperty 返回目標(biāo)結(jié)果的key。
resultType 結(jié)果的類型。
order 設(shè)置為BEFORE或AFTER,設(shè)置為BEFORE,會先選擇主鍵設(shè)置keyProperty,然后執(zhí)行插入語句;設(shè)為AFTER,先執(zhí)行插入語句,然后設(shè)置selectKey元素。
statementType 和前面的相同,MyBatis 支持 STATEMENT、PREPARED、CALLABLE語句的映射類型,分別代表PreparedStatement、CallableStatement 類型。到此這篇關(guān)于Mybatis常用標(biāo)簽及屬性的文章就介紹到這了,更多相關(guān)Mybatis常用標(biāo)簽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Security使用單點(diǎn)登錄的權(quán)限功能
本文主要介紹了Spring Security使用單點(diǎn)登錄的權(quán)限功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
SpringCloud如何利用Feign訪問外部http請求
這篇文章主要介紹了SpringCloud如何利用Feign訪問外部http請求,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringCloud alibaba使用Nacos配置中心解讀
本文介紹了如何在Spring Boot項(xiàng)目中使用Spring Cloud Alibaba和Nacos進(jìn)行依賴管理、配置管理及配置刷新,通過添加BOM和配置文件,可以簡化依賴版本的管理,并實(shí)現(xiàn)配置的動(dòng)態(tài)刷新,同時(shí),還展示了如何通過自定義DataId進(jìn)行配置管理,并詳細(xì)介紹了各種配置方式的優(yōu)先級2026-01-01
Mybatis-plus中QueryWrapper的多種用法小結(jié)
本文主要介紹了Mybatis-plus中QueryWrapper的多種用法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
菜鳥學(xué)習(xí)java設(shè)計(jì)模式之單例模式
這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之單例模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
Spring Boot項(xiàng)目中jar包在服務(wù)器上啟動(dòng)的正確姿勢
這篇文章主要給大家介紹了關(guān)于Spring Boot項(xiàng)目中jar包在服務(wù)器上啟動(dòng)的正確姿勢,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01
JSON for java快速入門總結(jié)學(xué)習(xí)
這篇文章主要介紹了JSON for java入門總結(jié)學(xué)習(xí),有需要的可以了解一下。2016-11-11

