背景
黑马Java Web教程的TLIAS教学系统,员工管理的分页查询部分出现无法找到list问题。
错误原因
不满足Mybatis的XML配置的同包同名规则。
解决方法
复制EmpMapper的路径,复制下来后为com/lwj/mapper这样的格式,在resources新建文件夹,命名为刚复制下来的com/lwj/mapper,粘贴上后成为com.lwj.mapper,再次测试,正常。
排查思路
-
将错误信息贴到chatGPT上,并未解决;
-
由于做Mybatis时这部分成功过,回顾了该部分的XML配置规则,包括:
- XML映射文件的名称与
Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名) - XML映射文件的
namespace属性为Mapper接口全限定名一致 - XML映射文件中sql语句的id与
Mapper接口中的方法名一致,并保持返回类型一致。
发现不满足同包同名条件,故新建包
com.heima.mapper,将EmpMapper.xml放入该文件夹下。 再次测试依旧失败。 - XML映射文件的名称与
-
再次参考成功过的Mybatis部分的
Test部分,照抄语句,发现问题不是连接不上数据库,而是找不到list语句; -
突然想起当初成功时是直接复制
path,将文件夹重命名为com/lwj/mapper后,自动变为com.lwj.mapper,成功。
总结
失败原因
- 这次与做Mybatis时间隔好几天,不记得当初的步骤;
- 理解不到位,不理解是
Mapper是怎样连接数据库的。
排查优化
- 先问chatGPT没问题;
- 参照以前的成功经验,应当全面模拟,完全复现从前的步骤。