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