最好从建立项目时,就使用spring工具进行相关配置属性的设置,这里采用的是通过手动修改pom.xml文件的方式进行配置,所以遇到的问题也比较多。
1. pom.xml中添加依赖和插件
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- alibaba的druid数据库连接池 -->
<!--
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
-->
<!-- mybatis generator 自动生成代码插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
2. application.properties配置
#数据源配置
spring.datasource.name=test
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=root
# 使用druid数据源
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 注意:一定要对应mapper映射xml文件的所在路径
mybatis.mapper-location=classpath:com.test.dbtest.mapper/*.xml
# 注意:对应实体类的路径
mybatis.type-aliases-package=com.test.dbtest.entity
#pagehelper分页插件
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
eclipse中使用generator生成mybatis文件,需要安装插件mybatis generator。
错误:Unknown character set: 'utf8mb4'
采用mysql-connector-java-5.1.6-bin.jar版本的包后,错误消失了。
需要注意的是,涉及到两个文件中,一个是generatorConfig.xml文件中的配置:
<classPathEntry location="D:\workspace\demo\lib\mysql-connector-java-5.1.6-bin.jar"/>
另一个是pom.xml文件中的配置:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
只修改一个地方不会生效。
数据库是Mysql 6.0版本。
尝试过的mysql-connector版本包括:mysql-connector-java-5.1.47-bin.jar,mysql-connector-java-5.1.7-bin.jar,mysql-connector-java-5.1.25-bin.jar,connector-java-5.1.35-bin.jar。
出现错误:project src does not exist
应将generatorConfig.xml文件中的配置做如下修改:
将targetProject="./src/main/java" 改为 targetProject="[project name]/src/main/java"
通过注解添加扫描:
@MapperScan("com.test.dbtest.dao")
通过配置文件application.properties添加扫描:
mybatis.mapper-location=classpath:com.test.dbtest.mapper/*.xml
错误提示:
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.bind.RelaxedDataBinder
boot.bind下找不到RelaxedDataBinder这个方法,查看API发现,这个org.springframework.boot.bind 包已经删掉了,导致RelaxedPropertyResolver这个方法已经不可用了.
这是spring boot 2.x.x整合使用alibaba的druid数据库连接池,com.github.pagehelper的分页插件,启动项目报错。
解决方法有两种,第一是放弃druid,直接使用jdbc连接,第二中是使用springboot2.x.x以下的版本。
第一种方法:
pom.xml文件修改
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
application.properties配置修改:
driver-class-name: com.mysql.jdbc.Driver
解决方案二,springboot版本修改为1.5.x
pom.xml文件修改
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
application.properties配置修改:
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
遇到过的坑:
1. Controller写错包名导致没有扫描到包或者没有配置扫描包路径导致无法访问,Application启动类放置在上层目录,并且在启动类中添加扫描包的注解;@ComponentScan(basePackages = {"com.test.dbtest"})
2. 没有配置mapper扫描导致找不到dao;@MapperScan("com.test.dbtest.dao")
3. 配置的mybatis的xml文件位置属性名称错误,少了一个s,把mybatis.mapper-locations写成mybatis.mapper-location了;
mybatis.mapper-locations=classpath:com/test/dbtest/mapper/*.xml
4. Service实现类没有添加注解@Service(value = "userService")