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

mybatis resultMap复杂类型list映射映射泛型为对象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

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

ENTITY

@Datapublic 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

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

MAPPER

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

mybatis的几种传值方式1.单个参数传参

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. 实体对象传参

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>

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

人的价值,在遭受诱-惑的一瞬间被决定

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

相关文章:

你感兴趣的文章:

标签云: