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

mybatis 如何利用resultMap復(fù)雜類型list映射

 更新時(shí)間:2021年07月30日 12:44:43   作者:954L  
這篇文章主要介紹了mybatis 如何利用resultMap復(fù)雜類型list映射的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis resultMap復(fù)雜類型list映射

映射泛型為對(duì)象

xml

<resultMap id="internetDataDTO" type="com.mdm.skr.mdm_common.dto.StrategyInternetDataDTO">
    <id property="id" column="id" jdbcType="INTEGER"/>
    <result property="internetData" column="internet_data" jdbcType="INTEGER"/>
    <collection property="userList" ofType="com.mdm.skr.mdm_common.entity.SysUser">
        <id property="id" column="id" jdbcType="INTEGER"/>
        <result property="number" column="number" jdbcType="VARCHAR"/>
        <result property="pushToken" column="push_token" jdbcType="VARCHAR"/>
        <result property="wsChannelId" column="ws_channel_id" jdbcType="VARCHAR"/>
    </collection>
</resultMap> 
 
<select id="selectInternetDataDTOByInternetDataIdList" resultMap="internetDataDTO">
      SELECT sidu.id, sidu.internet_data, su.id, su.number, su.push_token, su.ws_channel_id
      FROM strategy_internet_data_user sidu JOIN skr_user su on su.id = sidu.user_id
      WHERE sidu.id IN
      <foreach collection="internetDataIdList" open="(" close=")"
          separator="," item="internetDataId">
          #{internetDataId}
      </foreach>
</select>

DTO

@Data
public class StrategyInternetDataDTO { 
    private Integer id ;
    private Integer internetData ;
    private List<SysUser> userList ;
 
}

ENTITY

@Data
public class SysUser { 
    private Integer id;
    private String number;
    private String pushToken;
    private String wsChannelId ; 
}

MAPPER

List<StrategyInternetDataDTO> selectInternetDataDTOByInternetDataIdList(@Param("internetDataIdList") List<Integer> internetDataIdList);

映射泛型為包裝類型

xml

<resultMap id="internetDataDTO" type="com.mdm.skr.mdm_common.dto.StrategyInternetDataDTO">
    <id property="id" column="id" jdbcType="INTEGER"/>
    <result property="internetData" column="internet_data" jdbcType="INTEGER"/>
    <collection property="userIdList" ofType="java.lang.Integer" javaType="java.util.List">
        <result column="userId"/>
    </collection>
</resultMap>  
 
<select id="selectInternetDataDTOByInternetDataIdList" resultMap="internetDataDTO">
      SELECT sidu.id, sidu.internet_data, sidu.user_id userId
      FROM strategy_internet_data_user sidu
      WHERE sidu.id IN
      <foreach collection="internetDataIdList" open="(" close=")"
          separator="," item="internetDataId">
          #{internetDataId}
      </foreach>
</select>

DTO

@Data
public class StrategyInternetDataDTO { 
    private Integer id ;
    private Integer internetData ;
    private List<Integer> userIdList ; 
}

MAPPER

List<StrategyInternetDataDTO> selectInternetDataDTOByInternetDataIdList(@Param("internetDataIdList") List<Integer> internetDataIdList);

mybatis的幾種傳值方式

1.單個(gè)參數(shù)傳參

User selectUserInfo(Integer userId);
<select id = "selectUserInfo" parameterType = "java.lang.Inte" resultMap="BaseResultMap" >
    select
    <include refid="Base_Column_List" />
    from user
    where userId = #{userId , jdbcType=INTEGER}
</select>

2. 按照順序傳參

User selectUserInfo(Integer userId, String userName, String userPass);
<select id = "selectUserInfo" resultMap="BaseResultMap" >
    select
    <include refid="Base_Column_List" />
    from user
    where userId = #{arg0} and userName = #{arg1} and userPass = #{arg2}
</select>

3. 使用@Param注解傳參

User selectUserInfo(@Param("userName")String userName, @Param("userPass")String userPass);
<select id = "selectUserInfo" resultMap="BaseResultMap" >
    select
    <include refid="Base_Column_List" />
    from user
    where userName = #{userName} and userPass = #{userPass}
</select>

4. 使用Map傳參 注意傳參方式:parameterType="java.util.Map"

Map<String,Object> map = new HashMap();
map.put("userName","張三");
map.put("userPass","123");
User user = userMapper.selectUserInfo(map);
User selectUserInfo(Map<String,Object> map);
<select id="selectUserInfo" parameterType="java.util.Map" resultMap="BaseResultMap" >
    select
    <include refid="Base_Column_List" />
    from user
    where userName = #{userName} and userPass = #{userPass}
</select>

5. 實(shí)體對(duì)象傳參

User user = new User();
user.setUserName("張三");
user.setUserPass("123");
User user = UserMapper.selectUserInfo(user);
User selectUserInfo(User record);
<select id="selectUserInfo" parameterType="com.LiuXu.bean.User" resultMap="BaseResultMap" >
    select
    <include refid="Base_Column_List" />
    from user
    where userName = #{userName} and userPass = #{userPass}
</select>

6. List傳參

List<User> list = new ArrayList<>();
list.add(user1);
list.add(user2);
List<User> userList = userMapper.selectUserInfo(list);
    
List<User> selectUserInfo(List<User> record);
<select id="selectUserInfo" resultMap="BaseResultMap" >
    select
    <include refid="Base_Column_List" />
    from user
    where userId in
    <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
        #{item}
    </foreach>
</select>

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

相關(guān)文章

  • SpringIOC控制反轉(zhuǎn)的原理詳解

    SpringIOC控制反轉(zhuǎn)的原理詳解

    這篇文章主要介紹了SpringIOC控制反轉(zhuǎn)的原理詳解,本來管理業(yè)務(wù)對(duì)象(bean)的操作是由我們程序員去做的,但是有了?Spring?核心容器后,這些?Bean?對(duì)象的創(chuàng)建和管理交給我們Spring容器去做了,也就是控制權(quán)由程序員變成了容器,需要的朋友可以參考下
    2023-08-08
  • springboot多數(shù)據(jù)源實(shí)現(xiàn)方式

    springboot多數(shù)據(jù)源實(shí)現(xiàn)方式

    本文介紹了多數(shù)據(jù)源配置的重要性以及在SpringBoot中如何配置單個(gè)默認(rèn)數(shù)據(jù)源和多個(gè)數(shù)據(jù)源,此外,還討論了如何整合MyBatis、實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源路由、事務(wù)管理以及使用dynamic-datasource-spring-boot-starter框架來簡(jiǎn)化多數(shù)據(jù)源管理
    2025-01-01
  • Spring的@Conditional詳解

    Spring的@Conditional詳解

    這篇文章主要介紹了Spring的@Conditional詳解,給想要注入Bean增加限制條件,只有滿足限制條件才會(huì)被構(gòu)造并注入到Spring的IOC容器中,通常和@Bean注解一起使用,需要的朋友可以參考下
    2024-01-01
  • SpringBoot實(shí)現(xiàn)PDF轉(zhuǎn)圖片的代碼示例

    SpringBoot實(shí)現(xiàn)PDF轉(zhuǎn)圖片的代碼示例

    在本文中,我們使用SpringBoot演示了如何將PDF文件轉(zhuǎn)換為一張或多張圖片,這些示例演示了如何使用Java編程語言與其他開源技術(shù)集成,以實(shí)現(xiàn)各種文件格式之間的轉(zhuǎn)換,感興趣的小伙伴跟著小編一起來看看吧
    2024-08-08
  • 詳解mybatis 批量更新數(shù)據(jù)兩種方法效率對(duì)比

    詳解mybatis 批量更新數(shù)據(jù)兩種方法效率對(duì)比

    這篇文章主要介紹了詳解mybatis 批量更新數(shù)據(jù)兩種方法效率對(duì)比,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • IDEA快速搭建spring?boot項(xiàng)目教程(Spring?initializr)

    IDEA快速搭建spring?boot項(xiàng)目教程(Spring?initializr)

    這篇文章主要介紹了IDEA快速搭建spring?boot項(xiàng)目教程(Spring?initializr),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java-lambda表達(dá)式入門看這一篇就夠了

    Java-lambda表達(dá)式入門看這一篇就夠了

    lambda表達(dá)式最簡(jiǎn)單的作用就是用于簡(jiǎn)化創(chuàng)建匿名內(nèi)部類對(duì)象,Lambda表達(dá)式是一個(gè)可傳遞的代碼塊,可以在以后執(zhí)行一次或多次,下面通過本文給大家介紹Java-lambda表達(dá)式入門教程,感興趣的朋友一起看看吧
    2021-05-05
  • javaweb設(shè)計(jì)中filter粗粒度權(quán)限控制代碼示例

    javaweb設(shè)計(jì)中filter粗粒度權(quán)限控制代碼示例

    這篇文章主要介紹了javaweb設(shè)計(jì)中filter粗粒度權(quán)限控制代碼示例,小編覺得還是挺不錯(cuò)的,需要的朋友可以參考。
    2017-10-10
  • Mybatis實(shí)現(xiàn)自動(dòng)生成增刪改查代碼

    Mybatis實(shí)現(xiàn)自動(dòng)生成增刪改查代碼

    這篇文章主要為大家詳細(xì)介紹了Mybatis如何實(shí)現(xiàn)自動(dòng)生成增刪改查代碼的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-01-01
  • @WebFilter在SpringBoot無效的原因分析和解決方案

    @WebFilter在SpringBoot無效的原因分析和解決方案

    使用Ruoyi的demo部署成功后,發(fā)現(xiàn)js、css等靜態(tài)文件都進(jìn)入了過濾器,但是發(fā)現(xiàn)靜態(tài)文件沒有使用瀏覽器緩存,新建BrowserCacheFilter.java并增加@WebFilter處理,應(yīng)用自動(dòng)重啟后發(fā)現(xiàn)@WebFilter無效,所以本文給大家介紹了@WebFilter在SpringBoot無效的原因分析和解決方案
    2024-03-03

最新評(píng)論

施甸县| 彝良县| 辛集市| 遂平县| 汕尾市| 安阳市| 泸溪县| 微山县| 伊金霍洛旗| 新源县| 淄博市| 文成县| 图木舒克市| 淮阳县| 塔城市| 和顺县| 开远市| 莱芜市| 昭平县| 柳江县| 灵石县| 历史| 仪陇县| 靖宇县| 桦川县| 吕梁市| 泸溪县| 宜都市| 玉林市| 延吉市| 舒城县| 民勤县| 徐水县| 施甸县| 长兴县| 城市| 山东省| 交城县| 浪卡子县| 防城港市| 贵定县|