gpt4 book ai didi

mybatis 如何利用resultMap复杂类型list映射

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章mybatis 如何利用resultMap复杂类型list映射由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

mybatis resultMap复杂类型list映射

映射泛型为对象

xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
< 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

?
1
2
3
4
5
6
7
@Data
public class StrategyInternetDataDTO {
     private Integer id ;
     private Integer internetData ;
     private List<SysUser> userList ;
 
}

ENTITY

?
1
2
3
4
5
6
7
@Data
public class SysUser {
     private Integer id;
     private String number;
     private String pushToken;
     private String wsChannelId ;
}

MAPPER

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

映射泛型为包装类型

xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
< 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

?
1
2
3
4
5
6
@Data
public class StrategyInternetDataDTO {
     private Integer id ;
     private Integer internetData ;
     private List<Integer> userIdList ;
}

MAPPER

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

mybatis的几种传值方式

1.单个参数传参

?
1
2
3
4
5
6
7
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. 按照顺序传参

?
1
2
3
4
5
6
7
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注解传参

?
1
2
3
4
5
6
7
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"

?
1
2
3
4
5
6
7
8
9
10
11
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. 实体对象传参

?
1
2
3
4
5
6
7
8
9
10
11
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传参

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 >

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/wkh___/article/details/91550524 。

最后此篇关于mybatis 如何利用resultMap复杂类型list映射的文章就讲到这里了,如果你想了解更多关于mybatis 如何利用resultMap复杂类型list映射的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com