数据库查询和代码查询结果不一致,部分字段对应的结果为null

今天遇到了一个很疑惑的问题。java代码查询数据库的一条记录居然和表内的数据不一样,当时看到的时候,黑人问号.。
错误如下:
数据库查询结果如下
在这里插入图片描述
代码查询结果

[Cart [id=121, userId=null, productId=null, quantity=1, checked=1, createTime=null, updateTime=null]]

最终终于找到了问题所在
分析:可以看到id是正常的,只有user_id、product_id、creat_time、update_time错误,而这时可以看出这些字段和实体类的属性命名不一样(属性是进行JPA导入自动生成的)。猜测应该就是这里的问题了,那改一下实体类属性试试。
修改之后再次运行:

[Cart [id=121, user_id=1, product_id=26, quantity=1, checked=1, create_time=Sat Mar 21 21:39:49 CST 2020, update_time=Sat Mar 21 21:39:49 CST 2020]]

猜测正确,问题成功解决。
所以是字段和实体类的属性映射出了问题所导致的。

那我们不想修改实体类属性,那可以用代码也是可以映射的。

  1. 利用注解方式@Result
@Results({        
        @Result(property="userId",column="user_id",jdbcType=JdbcType.INTEGER),
        @Result(property="productId",column="product_id",jdbcType=JdbcType.INTEGER),
        @Result(property="createTime",column="create_time",jdbcType=JdbcType.TIMESTAMP),
        @Result(property="updateTime",column="update_time",jdbcType=JdbcType.TIMESTAMP),
    })

(注:这里可以选择需要进行映射的表字段和属性,其他和表字段相同名字的属性,MyBatis会自动映射)
运行结果:

[Cart [id=121, user_id=1, product_id=26, quantity=1, checked=1, create_time=Sat Mar 21 21:39:49 CST 2020, update_time=Sat Mar 21 21:39:49 CST 2020]]
  1. 在mapper.xml中利用<resultMap>标签映射
<resultMap id="BaseResultMap" type="com.shop.pojo.Cart" >
    <constructor >
      <idArg column="id" jdbcType="INTEGER" javaType="java.lang.Integer" />
      <arg column="user_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
      <arg column="product_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
      <arg column="quantity" jdbcType="INTEGER" javaType="java.lang.Integer" />
      <arg column="checked" jdbcType="INTEGER" javaType="java.lang.Integer" />
      <arg column="create_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
      <arg column="update_time" jdbcType="TIMESTAMP" javaType="java.util.Date" />
    </constructor>
</resultMap>

(注:这里是进行表的映射,不是字段的映射,所以必须要映射全部字段。
那如果少一个字段会怎么样???
在这里插入图片描述
直接报错。)

正确运行结果

[Cart [id=121, user_id=1, product_id=26, quantity=1, checked=1, create_time=Sat Mar 21 21:39:49 CST 2020, update_time=Sat Mar 21 21:39:49 CST 2020]]
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱吃鱼的ねこ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值