今天笔者完善了一下自己写的项目,加上了数据库,之前都是靠着session来发电的。然后遇到了个问题,就是使用mybais-plus出现Invalid bound statement (not found)的bug。
一、笔者碰到这种问题的场景
1、使用spring boot集成mybatis-plus。
2、不加载mybatis-plus场景启动器,自动配置数据源。
二、如何解决这种问题
1、看看mapper.xml文件中是否存在自定义查询方法的sql语句。(这个错误其实经常出现,因为不小心打错字母o(╥﹏╥)o)
2、查询@MapperScan这个注解,看看项目启动类Applation中是否已经配置了这个注解,并且和自动配置的数据源扫包路径相冲突。
3、这一步是低级错误没犯的情况下,最可能出现的一个错误,笔者就是犯下的这个错误。自动配置数据源的情况下如果要使用mybatis-plus,就必须使用MybatisSqlSessionFactoryBean这个工厂对象来创建session工厂,不能选择默认的SqlSessionFactoryBean。SqlSessionFactoryBean只是一个接口,里面并没有具体的实现,需要自己写sql来对应方法,而MybatisSqlSessionFactoryBean中是做了一些不是太复杂的sql语句生成的,可以配合mybatis-plus中的一些方法使用。
顺便提一句:使用了自动配置数据源的方式后,需要将MybatisPlusAutoConfiguration这个配置类在Applation启动类中eclude掉,不然可能还是会使用原来的配置。当然eclude掉之后,你在配置文件中给mybatisPlus的配置也全部无效了,因为没有相关的属性配置类去读取了