springboot整合mybatis过程中,想把xml文件和Dao接口文件放到同一个包下,结果报错
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxl.job.executor.mapper.RecordDAO.sum
这种问题大多数情况下先检查xml文件的<mapper namespace=""> 和 <resultMap id="xx" tyep="com.xxl.job..."> 是否配置正确,我今天要说的是另一个问题,正常情况下xml等资源文件要放到resource文件夹下,而我就想放到src/main/java下,所以出现这个问题,maven打包的时候默认只会把resources下的资源文件打进包里,所以想包括src/main/java下的xml文件需要使用<build>标签,解决方案如下,在application.properties文件中指定xml文件所在的path
mybatis.mapper-locations: classpath*:com/xxl/job/executor/mapper/*.xml
然后配置maven的pom.xml 在 <build>里增加<resources>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>com/xxl/job/executor/mapper/*.xml</include>
</includes>
</resource>
</resources>
</build>
下面是整合过程
第一步 引入jar包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
第二步,配置数据库参数
spring.datasource.url=jdbc:mysql://mysql.xxx.cn:3306/db_name?useSSL=false&characterEncoding=utf8&useTimezone=true&serverTimezone=GMT%2B8
spring.datasource.username=uname
spring.datasource.password=psw
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
配置完成 ,在dao上注解@Mapper
package com.xxl.job.executor.mapper;
import org.apache.ibatis.annotations.Mapper;
/**
* @author xxx
* @description //TODO 设计说明
* @date 19-4-19
* @copyright
*/
@Mapper
public interface WechatPayRecordDAO {
}