数据库查询和代码查询结果不一致,部分字段对应的结果为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 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]]

你可能感兴趣的:(数据库)