SpringBoot 集成 MyBatis 几个注意的问题

1、项目是在eclipse上用maven构建的,采用Dao与xml映射的形式

<!-- spring boot基本环境 -->
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.0.2.RELEASE</version>
</parent>
	<!--web应用基本环境依赖 包含 Tomcat 和 spring-mvc-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
	<!--MySql  -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>
	<!--MyBatis 包含 spring-boot-starter-jdbc -->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>1.3.1</version>
</dependency>

 

2、项目结构

3、添加 @MapperScan({"com.xhl.springboot_1.dao"})

    配置Dao的接口所在包名(在启动类或配置类)

package com.xhl.springboot_1;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Hello world!
 *
 */

@SpringBootApplication
@MapperScan({"com.xhl.springboot_1.dao"})
public class Application 
{
    public static void main( String[] args )
    {
    	SpringApplication.run(Application.class,args);
    }
}

配置错误启动会报如下错误

***************************
APPLICATION FAILED TO START
***************************

Description:

Field userMapper in com.xhl.springboot_1.service.impl.UserServiceImpl required a bean of type 'com.xhl.springboot_1.dao.UserMapper' that could not be found.


Action:

Consider defining a bean of type 'com.xhl.springboot_1.dao.UserMapper' in your configuration.

4、添加 mybatis.mapperLocations=classpath:**/mapper/*.xml

     application.propertirs或(yml)中配置Dao的实体类所在位置

    注意 propertirs文件和yml文件写法在格式上的区别

# --- {MyBatis} RDB JDBC Connection
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driverClassName=com.mysql.jdbc.Driver
mybatis.mapperLocations=classpath:**/mapper/*.xml

如果*.xml与dao的接口类*.java在同一个包下(即相同路径),这块不进行配置也可以正确运行,否则虽然项目会正常启动,但是在请求数据时,dao会找不到xml,错误信息如下

控制台 org.apache.ibatis.binding.BindingException 异常

页面效果