mybatis查询结果返回为空(NULL)但是查数据库能查到

刺骨的言语ヽ痛彻心扉 2023-06-06 04:00 112阅读 0赞

在自己搭的项目中出现了这个错误。

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文件中配置:

  1. #mybatis配置
  2. mybatis:
  3. # 映射文件所在路径
  4. mapper-locations: classpath:mapper/*.xml
  5. # pojo类所在包路径
  6. type-aliases-package: com.chun.zeroyuanlottery.model
  7. configuration:
  8. map-underscore-to-camel-case: true

2)指定配置文件下进行配置

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <!--开启驼峰命名规则自动转换-->
  7. <settings>
  8. <setting name="mapUnderscoreToCamelCase" value="true" />
  9. </settings>
  10. </configuration>

yml需指定配置文件:

  1. mybatis:
  2. # 映射文件所在路径
  3. mapper-locations: classpath:mapper/*.xml
  4. # pojo类所在包路径
  5. type-aliases-package: com.chun.zeroyuanlottery.model
  6. configLocation: classpath:/mybatis-config.xml

发表评论

表情:
评论列表 (有 0 条评论,112人围观)

还没有评论,来说两句吧...

相关阅读