关于项目运行后某些字段返回值为 null
打印 sql 语句无错,对照项目后发现
当 mybatis 执行查询时,字段名称要与数据库名称相匹配
解决方法:
在 mapper 类语句上添加 @Results
-@Result
注解,比如:
@Results(
@Result(property = "seckillId", column="seckill_id")
)
@Select("SELECT seckill_id, name, number FROM seckill WHERE seckill_id = #{seckillId}")
public Seckill queryById(@Param("seckillId") long seckillId);
@Result
中的 property
属性映射到实体类中的名称
column
属性映射到数据库中的字段名,使两者一一对应
最后成功返回数值
一般 @Results
配合 @ResultMap
使用,当前面定义了 @Results
的 id 后,后面的方法直接用 @ResultMap
引用即可:
@Results(
id = "seckill", value = {
@Result(property = "seckillId", column = "seckill_id"),
@Result(property = "startTime", column = "start_time"),
@Result(property = "endTime", column = "end_time"),
@Result(property = "createTime", column = "create_time")
}
)
@Select("SELECT * FROM seckill WHERE seckill_id = #{seckillId}")
public Seckill queryById(@Param("seckillId") long seckillId);
@ResultMap("seckill")
@Select("SELECT seckill_id, name, number, start_time, end_time, create_time FROM seckill ORDER BY create_time DESC LIMIT #{offset}, #{limit}")
public List<Seckill> queryAll(@Param("offset") int offset, @Param("limit") int limit);