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(類(lèi)似于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)行模糊查詢(xú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查詢(xún)最大主鍵 --> <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語(yǔ)句與Mapper接口中的方法,。 parameterType 傳入?yún)?shù)的類(lèi)全限定名或別名。MyBatis 可以通過(guò)類(lèi)型處理器(TypeHandler)推斷出具體傳入語(yǔ)句的參數(shù),默認(rèn)值為未設(shè)置(unset)。 resultType 返回結(jié)果的類(lèi)全限定名或別名。返回的是集合,則設(shè)置為集合包含的類(lèi)型。 resultMap 對(duì)外部 resultMap 的命名引用。resultType 和 resultMap 之間只能同時(shí)使用一個(gè)。 flushCache 設(shè)為 true 后,只要語(yǔ)句被調(diào)用,會(huì)導(dǎo)致本地緩存和二級(jí)緩存被清空,默認(rèn)值(對(duì)select):false。 useCache 設(shè)為 true 后,將會(huì)導(dǎo)致本條語(yǔ)句的結(jié)果被二級(jí)緩存緩存起來(lái),默認(rèn)值:對(duì) select 元素為 true。 timeout 等待數(shù)據(jù)庫(kù)返回請(qǐng)求結(jié)果的秒數(shù)。默認(rèn)值為未設(shè)置(unset)(依賴(lài)數(shù)據(jù)庫(kù)驅(qū)動(dòng))。 fetchSize 給驅(qū)動(dòng)的建議值,讓驅(qū)動(dòng)程序每次批量返回的結(jié)果行數(shù)等于這個(gè)設(shè)置值。默認(rèn)不設(shè)置(unset)(依賴(lài)驅(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 (依賴(lài)數(shù)據(jù)庫(kù)驅(qū)動(dòng))。 databaseId 如果配置了數(shù)據(jù)庫(kù)廠(chǎng)商標(biāo)識(shí)(databaseIdProvider),MyBatis 會(huì)加載不帶 databaseId 屬性和帶有匹配當(dāng)前數(shù)據(jù)庫(kù) databaseId 屬性的所有語(yǔ)句;如果帶和不帶的語(yǔ)句都有,不帶的會(huì)被忽略。 resultOrdered 僅針對(duì)嵌套結(jié)果 select 語(yǔ)句: 若為 true,將會(huì)假設(shè)包含了嵌套結(jié)果集或分組,返回一個(gè)主結(jié)果行時(shí),不會(huì)產(chǎn)生對(duì)前面結(jié)果集的引用。獲取嵌套結(jié)果集的時(shí)不至于內(nèi)存不夠,默認(rèn):false。 resultSets 僅適用于多結(jié)果集的情況。返回多個(gè)結(jié)果集并賦予每個(gè)結(jié)果集一個(gè)名稱(chēng),多個(gè)名稱(chēng)之間以逗號(hào)分隔。
insert、update、delete標(biāo)簽屬性:
id 必選屬性,綁定Sql語(yǔ)句與Mapper接口中的方法,。 parameterType 傳入?yún)?shù)的類(lèi)全限定名或別名。MyBatis 可以通過(guò)類(lèi)型處理器(TypeHandler)推斷出具體傳入語(yǔ)句的參數(shù),默認(rèn)值為未設(shè)置(unset)。 flushCache 設(shè)為 true 后,只要語(yǔ)句被調(diào)用,會(huì)導(dǎo)致本地緩存和二級(jí)緩存被清空,默認(rèn)值:(對(duì) insert、update 和 delete 語(yǔ)句)true。 timeout 等待數(shù)據(jù)庫(kù)返回請(qǐng)求結(jié)果的秒數(shù)。默認(rèn)值為未設(shè)置(unset)(依賴(lài)數(shù)據(jù)庫(kù)驅(qū)動(dòng))。 statementType 可選 STATEMENT、PREPARED、CALLABLE。讓 MyBatis 分別使用 Statement、PreparedStatement、CallableStatement,默認(rèn):PREPARED。 databaseId 如果配置了數(shù)據(jù)庫(kù)廠(chǎng)商標(biāo)識(shí)(databaseIdProvider),MyBatis 會(huì)加載不帶 databaseId 屬性和帶有匹配當(dāng)前數(shù)據(jù)庫(kù) databaseId 屬性的所有語(yǔ)句;如果帶和不帶的語(yǔ)句都有,不帶的會(huì)被忽略。 useGeneratedKeys (僅insert、update)會(huì)令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法來(lái)取出由數(shù)據(jù)庫(kù)內(nèi)部生成的主鍵,默認(rèn)值:false。 keyProperty (僅insert、update)指定能夠唯一識(shí)別對(duì)象的屬性,用 getGeneratedKeys 的返回值或 insert 語(yǔ)句的 selectKey 子元素設(shè)置它的值,默認(rèn):未設(shè)置(unset)??捎枚禾?hào)分隔多個(gè)屬性名。 keyColumn (僅insert、update)設(shè)置生成鍵值在表中的列名,當(dāng)主鍵列不是表中的第一列的時(shí)候,必須設(shè)置。如果生成列不止一個(gè),可用逗號(hào)分隔多個(gè)屬性名。
trim標(biāo)簽屬性:
prefix 拼接前綴。 suffix 拼接后綴。 prefixOverrides 去除sql語(yǔ)句前面的關(guān)鍵字或者字符。 suffixOverrides 去除sql語(yǔ)句后面的關(guān)鍵字或者字符。
foreach標(biāo)簽屬性:
collection 表示迭代集合的名稱(chēng),可以使用@Param注解指定。 item 必選參數(shù),集合中元素迭代時(shí)的別名。 index 在list和數(shù)組中,index是元素的序號(hào),在map中,index是元素的key。 open foreach代碼的開(kāi)始符號(hào),一般是(和close=")"合用。 close foreach代碼的關(guān)閉符號(hào),一般是)和open="("合用。 separator 元素之間的分隔符,separator=","會(huì)自動(dòng)在元素中間用“,“。
selectKey標(biāo)簽屬性:
keyProperty 返回目標(biāo)結(jié)果的key。 resultType 結(jié)果的類(lèi)型。 order 設(shè)置為BEFORE或AFTER,設(shè)置為BEFORE,會(huì)先選擇主鍵設(shè)置keyProperty,然后執(zhí)行插入語(yǔ)句;設(shè)為AFTER,先執(zhí)行插入語(yǔ)句,然后設(shè)置selectKey元素。 statementType 和前面的相同,MyBatis 支持 STATEMENT、PREPARED、CALLABLE語(yǔ)句的映射類(lèi)型,分別代表PreparedStatement、CallableStatement 類(lèi)型。
到此這篇關(guān)于Mybatis常用標(biāo)簽及屬性的文章就介紹到這了,更多相關(guān)Mybatis常用標(biāo)簽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java項(xiàng)目中防止SQL注入的四種方案總結(jié)
SQL注入是一種代碼注入技術(shù),通過(guò)把SQL命令插入到Web表單遞交或輸入域名或頁(yè)面請(qǐng)求的查詢(xún)字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令,下面我們就來(lái)看看如何在項(xiàng)目中防止SQL注入吧2023-10-10SpringBoot集成Liquibase的詳細(xì)步驟
Liquibase 是一個(gè)強(qiáng)大的數(shù)據(jù)庫(kù)版本控制工具,能夠與 Spring Boot2024-12-12
無(wú)縫集成,以簡(jiǎn)化數(shù)據(jù)庫(kù)遷移和管理的過(guò)程,以下是從開(kāi)始集成到最終運(yùn)行的詳細(xì)步驟,需要的朋友可以參考下spring boot整合spring-kafka實(shí)現(xiàn)發(fā)送接收消息實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于spring-boot整合spring-kafka實(shí)現(xiàn)發(fā)送接收消息的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)看看吧。2017-06-06Java的Flowable工作流之加簽轉(zhuǎn)簽詳解
這篇文章主要介紹了Java的Flowable工作流之加簽轉(zhuǎn)簽詳解,Flowable是一個(gè)開(kāi)源的工作流引擎,它提供了一套強(qiáng)大的工具和功能,用于設(shè)計(jì)、執(zhí)行和管理各種類(lèi)型的工作流程,需要的朋友可以參考下2023-11-11Java如何讀寫(xiě)Properties配置文件(Properties類(lèi))
這篇文章主要介紹了Java如何讀寫(xiě)Properties配置文件(Properties類(lèi)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05