mybatis输出映射resultType&resultMap

本文详细介绍了MyBatis框架中的resultType和resultMap的使用场景与配置方法,包括如何处理简单的数据类型及复杂的对象映射关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • resultType&resultMap的使用条件
    • 当表的字段与类的属性一致时,也就是类的属性与表的字段一一对应时则使用resultType否则使用resultMap。
    • 如果输出简单类型、POJO单个对象、输出POJO列表则使用resultMap。
    • 代码实现查询个数
      • 接口中的方法
      /**
       * 查询user的个数
       * @param vo
       * @return
       */
      public int findUserCount(UserQueryVo vo);
      
      • 映射文件的配置
      <select id="findUserCount" parameterType="userQueryVo" resultType="int">
          SELECT COUNT(*) FROM user WHERE sex = #{user.sex}
      </select>
      
      • 实现方法
      @Test
      public void test1(){
          UserMapper userMapper = session.getMapper(UserMapper.class);
          //获取数据
      
          //通过模型的包装类来查询用户
          UserQueryVo query = new UserQueryVo();
      
          User user = new User();
          user.setSex("2");
          query.setUser(user);
          int count = userMapper.findUserCount(query);
          System.out.println("女性的个数为:"+count);
      
      }
      
    • 当表查询到的值不再与类的属性值一一对应时使用resultMap
      • 除了在接口中写对应的方法,配置映射文件以及实现对应的方法之外,还需要设置返回数据resultMap
        • 配置文件代码
        <resultMap id="userResultMap" type="com.Marsoft.model.User">
            <id property="id" column="id_"></id>
            <result property="username" column="username_"></result>
            <result property="sex" column="sex_"></result>
            <result property="birthday" column="birthday_"></result>
            <result property="address" column="address_"></result>
        </resultMap>
        <select id="findUserByIdResultMap" parameterType="int" resultMap="userResultMap">
            SELECT id id_,
            username username_,
            sex sex_,
            birthday birthday_,
            address address_
            FROM USER WHERE id = #{id};
        </select>
        
        1. 其中resultMap标签的id是select标签resultMap属性的值,这里是根据id进行查询,所以表格的其它属性都在result标签中。
        2. type的的值是具体的某一个实体类
        3. result标签中的property的值对应的是实体类中的属性
        • 接口中的方法
        /**
         * 查询的结果作为resultMap传出
         * @param id
         * @return
         */
        public User findUserByIdResultMap(int id);
        
        • 实现方法
        @Test
        public void test2(){
            UserMapper userMapper = session.getMapper(UserMapper.class);
            //获取数据
        
            //通过模型的包装类来查询用户
            User user = userMapper.findUserByIdResultMap(1);
            System.out.println(user);
        
        }
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值