resultType及resultMap的用法

学习目标:

了解resultType的使用条件和基本使用

了解resultMap的使用条件基本使用


学习内容:

1.  resultType的使用条件

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

//pojo封装类
public class Brand {
    // id 主键
    private Integer id;  //封装类属性名 id
    // 品牌名称
    private String brandName; //封装类属性名 brandName
    // 企业名称
    private String companyName; //封装类属性名 companyName
    // 排序字段
    private Integer ordered; //封装类属性名 ordered
    // 描述信息
    private String description; //封装类属性名 description
    // 状态:0:禁用  1:启用
    private Integer status;

 

 这里id,ordered,description,status都是同名,可以使用resultType进行映射封装属性信息。

其他的brand_name,company_name明显和brandName,companyName不同,需要使用resultMap来映射封装属性信息,这些我们会在后面讲到。

(意思就是封装类的属性名和数据库表列名要一模一样,这样reslutType才能识别匹配(映射)相应的属性信息进行封装)
 

<!--resultType-->
  <!--select id这里填入的是接口方法名,通过映射执行下面的sql语句 --> 
 <select id="selectAll"  resultType="com.itheima.pojo.Brand"  >
  <!--resultType 这里填入的是封装类及其包名,最后会通过映射将sql列信息封装进入该封装类对象-->
        select
        *
        from tb_brand;
    </select>

如果sql查询到的字段与pojo的属性名不一致

(导致的结果就是名字不一致的属性未被识别出来,这样就会造成很常见的一种错误:未被识别的属性的sql信息没有存入封装对象中,查询时,封装对象的这些属性值为null。原因就是sql字段和属性名未匹配而无法识别并存入。

封装结果如下(部分null就是使用resultType未成功映射)

[Brand{id=1, brandName='null', companyName='null', ordered=5, description='好吃不上火', status=0}, Brand{id=2, brandName='null', companyName='null', ordered=100, description='华为致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界', status=1}, Brand{id=3, brandName='null', companyName='null', ordered=50, description='are you ok', status=1}]

Process finished with exit code 0

2.  resultMap的使用条件

如果存在brand_name,company_name这样sql列名明显和brandName,companyName这样的封装类对象属性名不同的,则需要使用resultMap将字段名和属性名对应起来,进行封装,将结果映射到pojo类对象中。

2.1 resultMap的使用方法

*1 先在xml文件中写入相应sql语句

<!--resultMap-->

    <select id="selectAll"  resultMap="brandResultMap"  >
<!--resultMap="id片段名"-->

        select
        *
        from tb_brand;
    </select>


//相应的查询语句

*2   然后在xml文件中配置resultMap标签,映射不同的字段和属性名


    <resultMap id="brandResultMap" type="com.itheima.pojo.Brand">
 <resultMap type="order" id="orderResultMap">
        <!-- 定义主键 ,非常重要。如果是多个字段,则定义多个id -->
        <!-- property:主键在pojo中的属性名 -->
        <!-- column:主键在数据库中的列名 -->

        <result column="brand_name" property="brandName"/>
        <result column="company_name" property="companyName"/>
    </resultMap>

注意:属性名和列明如果相同则不用写上去,底层已经完成好了。在这里我们发现resultMap比Type功能更加全面,更加方便使用,所有更推荐大家统一使用resultMap进行结果映射封装


学习产出:

1.掌握了查询sql进行封装对象信息的一些基本方法。

2了解resultType的使用条件和基本使用

3了解resultMap的使用条件基本使用

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾荒人、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值