mybatis查询结果返回为空(NULL)但是查数据库能查到
在自己搭的项目中出现了这个错误。
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating interface com.chun.zeroyuanlottery.mapper.ReviewLotteryGoodsMapper with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.chun.zeroyuanlottery.mapper.ReviewLotteryGoodsMapper.()
经过长时间的思考,现象如下:resultType是java库的实体类(如integer等),能返回值,如果是自己写的实体类,则属性字段返回null,唯独id(表字段和实体类同名)有返回值,还有个现象就是 代码显示错误。所以猜测是select的返回值字段与实体类不一致,也就是无法映射到实体类进行封装。
解决办法:
mybatis开启驼峰命名。
前提:数据库表设计按照规范“字段名中各单词使用下划线”_“划分”;如user_id 则实体类的字段为userId
1).yml文件中配置:
#mybatis配置
mybatis:
# 映射文件所在路径
mapper-locations: classpath:mapper/*.xml
# pojo类所在包路径
type-aliases-package: com.chun.zeroyuanlottery.model
configuration:
map-underscore-to-camel-case: true
2)指定配置文件下进行配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--开启驼峰命名规则自动转换-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
</configuration>
yml需指定配置文件:
mybatis:
# 映射文件所在路径
mapper-locations: classpath:mapper/*.xml
# pojo类所在包路径
type-aliases-package: com.chun.zeroyuanlottery.model
configLocation: classpath:/mybatis-config.xml
还没有评论,来说两句吧...