首页 > 其他 > 详细

Mybatis_19_结果集映射 resultMap 复杂类型使用(多对一的处理)

时间:2021-05-08 11:52:58      阅读:15      评论:0      收藏:0      [点我收藏+]

结果集映射 resultMap 复杂类型使用

  • resultType可以把查询结果封装到pojo类型中,但必须pojo类的属性名和查询到的数据库表的字段名一致。

  • 如果在Sql语句中,所查询的字段名和实体类中的属性名不一致,那么在查询过程中,Mybatis就会在实体类中找不到该字段所对应的属性名,那么查出来的数据就会为NULL。

    • 第一种解决办法, 给字段名设置别名,从而使某个字段名和实体类中的属性名一致。
  • 如果sql查询到的字段名与pojo的属性名不一致,则需要使用resultMap将字段名和属性名对应起来,进行手动配置封装,将结果映射到pojo中。

    • 第二种解决办法使用ResultMap结果集映射。

      第一步:添加标签
      
        <!--把结果集映射为一个User -->
        <resultMap id="userMap" type="com.shige.pojo.User"> 将数据库中的列名映射为实体类中的属性名,将二者绑定在一起。
         <result column="数据库中的字段"  property="实体类中的属性"> 
        </resultMap>
      
      
      第二步:将resultMap的ID属性传给sql语句的resultMap属性
      
        <select id="getUserById"  parameterType="int" resultMap="userMap">
      
  • resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。

    • 学生表和教师表联合查询,查询出学生表中的教师ID属性所对应的教师姓名

      第一步:查询出所有学生的信息

      第二步:设置结果集映射,嵌套子查询

         <!--复杂类型-->
         <association property="teacher" column="tid" javaType="com.shige.pojo.Teacher"  select="getTeacher"/>
      

      第三步: 进行子查询

       <select id="getTeacher" resultType="com.shige.pojo.Teacher">
           select * from Teacher where id=#{id};
       </select>
      
  • 学生表和教师表联合查询,查询出学生表中的教师ID属性所对应的教师姓名(第二种方式)

     <result property="id" column="sid"/>
     <result property="name" column="sname"/>
    
     <!--复杂类型-->
     <association property="teacher" javaType="com.shige.pojo.Teacher">
         <result property="name" column="tname"/>
     </association>
    

Mybatis_19_结果集映射 resultMap 复杂类型使用(多对一的处理)

原文:https://www.cnblogs.com/szqengr/p/14743831.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!