mapper文件中的resultMap声明实体类和表的映射关系是不是必要?
本文依照代码来说明这样一个问题:如果我们的mapper文件中没有声明字段和实体类的属性对应关系,那么查询出来的字段的值能不能放到实体类中?
答案是:如果查询的字段(org_id)和实体类的字段(org_id)完全一样。则是可以对应把值赋给实体的。如果表中的字段(org_id)对应的实体类中的属性为(orgId),则会对应不上导致值赋值不上去。我们可以理解为查询出来的结果集就是个Map,这个map的key就是select后面的字段,当封装到实体类时,拿着实体类的字段作为key获取value并封装到实体中。下面用代码来说明~
mapper文件:
实体类:
上面我如果对select的语句的结果集用 resultMap="BaseResultMap"
,则查询出来的结果集都会正确的赋值给实体类。因为我们给好了一一对应的映射关系。但是如果我们如果改成resultType="com.zhanglf.bo.DirectPurchaseOrdersGoods"
时,如果实体类字段和select语句中的字段一致则可赋值成功。我专门把select语句中的orgId 改成org_id,然后查询出来的结果是这样,可以看到orgId对应的字段为空,别的字段都有值:
所以得出结论:
如果我们针对sql较为简单的mapper文件时,可以不用resultMap,但是要知道如何才能把查询的值拿到。一个可以像上面这种用实体接受,或者用map来接受。
当然还有专门的生成工具来完成dao,bo,mapper而不用我们动手。
想了解可以点击这里