1:异常提示 500状态码,服务器异常
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.liyafei.dao.mapper.UserMapper.getUserList
截决方法:因为mapper.xml文件对应不上。UserMapper.java没有映射到UserMapper.xml。
在mybatis-config中加入
<mapper resource="mybatis/mapper/UserMapper.xml" /> <!-- Mapper文件可以和interface不在相同路径下! -->
这样才能绑定,使用mapper.xml中sql语句方法。
2:因为src/main/java目录下面的文件只有.java文件才会别编译成.class文件。其它文件不会打包进去。需要配置将.xml文件加入。
//另一种可能也可能是mapper.xml没有传入到target文件中,需要在pom.xml文件中添加resource映射
<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 --> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
如果该工程还有其它配置文件,例如applicationContext.xml在src/main/resources目录下,加入上面依赖,将会导致src/main/resources目录下面的文件加载不到target下面。这时不要将Mapper.xml放到src/main/java目录下。可以放到src/main/resources下面。将上面的配置去掉即可
2:异常,文件找不到异常,提示类路径下没有mybatis-config.xml。
java.io.FileNotFoundException: class path resource [mybatis-config.xml] cannot be opened because it does not exist
配置分页插件时,使用@configuration 将会把这个类扫描成配置文件mybatis-config.xml。默认需要在工程目录下
解决方法,将mybatis-config.xml放到classpath路径下即可
3:target目录下的classes目录下的目录直接写,前面不用/ ../ ./等。如classes目录下有mapper目录,含有UserMapper.xml文件,那么做映射时,就用 mapper/UserMapper.xml就可。
4:通过Mapper向Mapper.xml映射时,如果传递的参数是POJO。那么用@Param做注解。例如
insert(@Param("p") POJO pojo); Mapper.xml中用p就可取出POJO中的属性等