查询出来内容为null,resultMap相关解答

当查询结果中属性名与列名不匹配时,使用MyBatis的ResultMap可以有效地解决这个问题。ResultMap允许指定列名与实体类属性的映射,避免使用resultType导致的查询结果为null。通过在resultMap中定义id和result,映射列名到对应的属性,确保数据能正确填充到实体对象中。

查询出来内容为null,resultMap相关解答

ResultMap常用知识点
  1. resultMap元素,是mybatis映射文件中最为重要、功能最强大的元素。
  2. 使用JDBC查询,返回ResultSets,是最为常用的数据库操作。
  3. ResultMap的设计,简化了映射文件中编写复杂SQL的操作。
  4. 列名与属性名映射,一般用于列名和属性名不一致的情况。
  5. resultMap作为JDBC查询的ResultSets与映射实体之间的有效衔接,可以解决表中列的名字与实体中属性名不一致的问题。
举例说明

如果select语句的返回值是一个对象,并且实体类中的属性名和列名一致的情况,可以用resultType直接关联这个对象的全限定名;如果实体类中的属性名和列名不一致的情况,除了在sql语句中加别名之外,可以使用resultMap来指定属性名和列名,然后通过id注入到select标签里面。
如果属性名和列名不一致的情况,还用resultType去关联实体类,查询不出来内容,都为null,这时候就需要用resultType来指定了。

没有使用resultType情况

数据库中的表结构
实体类中的属性名

以上可以看出属性名和数据表中的列名不一致
映射文件
我们用resultType来关联我们将要查询出来的实体类
测试类
s没有resultMap的查询结果

以上为查询结果,虽然从数据库中查询出四条数据,但是我们并没有输出出来,就是因为属性名和列名不一致,导致数据不匹配,所以最后查询出来的内容为null

修改后的映射
我们添加了resultMap标签,并且设置id,然后让下面的select语句的resultMap属性关联上面resultMap标签里面的id就可以。
resultMap标签里面的id标签指的是你的主键,result表示除了主键以外的属性,column指得是数据库中的列名,property指实体类中的属性名。
加上resultMap之后的输出内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值