欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mybatis中的mapper.xml使用循環(huán)語句

 更新時(shí)間:2022年02月08日 10:44:14   作者:代碼搬暈工  
這篇文章主要介紹了mybatis中的mapper.xml使用循環(huán)語句,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mapper.xml使用循環(huán)語句

mapper.java,傳的參數(shù)是map

List<實(shí)體類> getList(Map<String,Object> paraMap);

mapper.xml

<!--select:對(duì)應(yīng)sql的select語句, id:方法名,parameterType:參數(shù)類型,resultMap:返回對(duì)象類型(BaseResultMap:標(biāo)簽-->
<!--<resultMap id="BaseResultMap" type="實(shí)體類包路徑"> 實(shí)體類的映射 不改的話一般都是這個(gè)名字)-->
<select id="getList" parameterType="java.util.Map" resultMap="BaseResultMap">
? select * from table where?
? <!-- 判斷-->
? <if test="a!= null">
? ? ? a = #{a,jdbcType=VARCHAR}
? </if>
? <if test="list!= null">
? ? and id in
? ? <!-- for循環(huán), item:循環(huán)后的值, index:循環(huán)下標(biāo)列式for循環(huán)的 i ,collection:參數(shù)名-->
? ? <!-- open="(" close=")" separator="," 就是把循環(huán)的值組成 (item1,item2,item3)的格式-->
? ? <foreach item="item" index="index" collection="list" open="(" close=")" separator=",">
?? ? #{item}
? ? </foreach>
? </if>
</select>

參數(shù),數(shù)組,list都行

Map<String,Object> map = new HashMap<String, Object>();
map.put("a","參數(shù)");
map.put("list",數(shù)組、List都行)
List<實(shí)體類> list = mapper.getList(map);

mybatis xml循環(huán)語句

MyBatis很好的支持批量插入,使用foreach即可滿足

首先創(chuàng)建DAO方法

package com.youkeda.comment.dao;
import com.youkeda.comment.dataobject.UserDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.List;
@Mapper
public interface UserDAO {
? ? int batchAdd(@Param("list") List<UserDO> userDOs);
}
<insert id="batchAdd" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
? ? INSERT INTO user (user_name, pwd, nick_name,avatar,gmt_created,gmt_modified)
? ? VALUES
? ? <foreach collection="list" item="it" index="index" separator =",">
? ? ? ? (#{it.userName}, #{it.pwd}, #{it.nickName}, #{it.avatar},now(),now())
? ? </foreach >
</insert>

foreach相當(dāng)于執(zhí)行力java的for循環(huán),他的屬性:

  • collection指定集合的上下文參數(shù)名稱比如這里的@Param("list")
  • item指定遍歷的每一個(gè)數(shù)據(jù)的變量,一般叫it,可以使用it.userName來獲取具體的值
  • index集合的索引值,從0開始
  • separator遍歷每條記錄并添加分隔符

除了批量插入,使用SQL in查詢多個(gè)用戶時(shí)也會(huì)使用

package com.youkeda.comment.dao;
import com.youkeda.comment.dataobject.UserDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.List;
@Mapper
public interface UserDAO {
? ? List<UserDO> findByIds(@Param("ids") List<Long> ids);
}
<select id="findByIds" resultMap="userResultMap">
? ? select * from user
? ? <where>
? ? ? ? id in
? ? ? ? <foreach item="item" index="index" collection="ids"
? ? ? ? ? ? ? ? ? ? open="(" separator="," close=")">
? ? ? ? ? ? #{item}
? ? ? ? </foreach>
? ? </where>
</select>
  • open

表示的是節(jié)點(diǎn)開始時(shí)自定義的分隔符

  • close

表示是節(jié)點(diǎn)結(jié)束時(shí)自定義的分隔符

執(zhí)行后會(huì)變成:

select * from user where id in (?,?,?)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用java實(shí)現(xiàn)銀行家算法

    使用java實(shí)現(xiàn)銀行家算法

    這篇文章主要為大家詳細(xì)介紹了如何使用java實(shí)現(xiàn)銀行家算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • MyBatis分頁插件PageHelper的使用與原理

    MyBatis分頁插件PageHelper的使用與原理

    提到插件相信大家都知道,插件的存在主要是用來改變或者增強(qiáng)原有的功能,MyBatis中也一樣,下面這篇文章主要給大家介紹了關(guān)于Mybatis第三方PageHelper分頁插件的使用與原理,需要的朋友可以參考下
    2023-02-02
  • Java編碼輔助工具M(jìn)apstruct用法詳解

    Java編碼輔助工具M(jìn)apstruct用法詳解

    這篇文章主要介紹了Java編碼輔助工具M(jìn)apstruct用法詳解,手動(dòng)編碼setter/getter各個(gè)對(duì)應(yīng)屬性,會(huì)顯得臃腫繁瑣。通過Mapstruct框架可簡單方便地完成這一工作。,需要的朋友可以參考下
    2019-06-06
  • PowerJob的ServerDiscoveryService工作流程源碼解讀

    PowerJob的ServerDiscoveryService工作流程源碼解讀

    這篇文章主要為大家介紹了PowerJob的ServerDiscoveryService工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 簡單了解Java日志脫敏框架sensitive

    簡單了解Java日志脫敏框架sensitive

    這篇文章主要介紹了簡單了解Java日志脫敏框架sensitive,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Jmeter中的timeshift()函數(shù)獲取當(dāng)前時(shí)間進(jìn)行加減

    Jmeter中的timeshift()函數(shù)獲取當(dāng)前時(shí)間進(jìn)行加減

    這篇文章主要介紹了Jmeter中的timeshift()函數(shù)獲取當(dāng)前時(shí)間進(jìn)行加減,TimeShift(格式,日期,移位,語言環(huán)境,變量)可對(duì)日期進(jìn)行移位加減操作,本文給大家詳細(xì)講解,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • springboot中如何使用自定義兩級(jí)緩存

    springboot中如何使用自定義兩級(jí)緩存

    本話題主要就是討論如何在springboot的基礎(chǔ)上,無縫集成ehcache和redis作為一二級(jí)緩存,并且實(shí)現(xiàn)緩存同步。
    2021-05-05
  • java自定義Scanner類似功能類的實(shí)例講解

    java自定義Scanner類似功能類的實(shí)例講解

    這篇文章主要介紹了java自定義Scanner類似功能類的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Spring?Boot?利用?XML?方式整合?MyBatis

    Spring?Boot?利用?XML?方式整合?MyBatis

    這篇文章主要介紹了Spring?Boot?利用?XML?方式整合?MyBatis,文章圍繞主題的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,組要的小伙伴可以參考一下
    2022-05-05
  • Java的Hibernate框架中用于操作數(shù)據(jù)庫的HQL語句講解

    Java的Hibernate框架中用于操作數(shù)據(jù)庫的HQL語句講解

    這篇文章主要介紹了Java的Hibernate框架中用于操作數(shù)據(jù)庫的HQL語句講解,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2016-01-01

最新評(píng)論