Spring Boot 集成mybatis 踩坑记录
工作中都是在已经搭建好的框架中进行开发,最近想要了解一下,作为小白记录一下在搭建的时候遇到的一些问题。这个版本相对较新,可能与 Spring Boot 2.0.0.RELEASE 不兼容。这个版本相对较新,可能与 Spring Boot 2.0.0.RELEASE 不兼容。这个版本相对较新,可能与 Spring Boot 2.0.0.RELEASE 不兼容。这个版本相对较新,可能与 Spring
工作中都是在已经搭建好的框架中进行开发,最近想要了解一下,作为小白记录一下在搭建的时候遇到的一些问题。基础的东西就不记录了,网上找一找就可以,主要记录下过程中遇到一些问题
一、pom文件中引入的依赖,相互之间版本有可能会不兼容,所以遇到解决不了的问题,可以考虑下依赖不兼容的问题。比如:
下面是我搭建过程中遇到的版本不兼容的问题。
-
Spring Boot 版本:你使用的是
spring-boot-starter-parent
的2.0.0.RELEASE
版本。这个版本相对较旧,可能与一些较新的依赖不兼容。 -
MyBatis-Plus 版本:你使用的是
mybatis-plus-boot-starter
的3.5.3
版本。这个版本相对较新,可能与 Spring Boot 2.0.0.RELEASE 不兼容。 -
MySQL Connector 版本:你使用的是
mysql-connector-java
的8.0.28
版本。这个版本相对较新,可能与 Spring Boot 2.0.0.RELEASE 不兼容。 -
Lombok 版本:你使用的是
lombok
的1.18.24
版本。这个版本相对较新,可能与 Spring Boot 2.0.0.RELEASE 不兼容。 -
MyBatis Spring Boot Starter 版本:你使用的是
mybatis-spring-boot-starter
的2.1.4
版本。这个版本相对较新,可能与 Spring Boot 2.0.0.RELEASE 不兼容。
基础依赖供大家参考
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>pro0925</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
</parent>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version> <!-- 明确指定版本 -->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version> <!-- 明确指定版本 -->
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
二、其次还有一个比较坑的是mybatis-plus相关的,项目启动的时候报错Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required“”这个方面的,我在找资料的时候。
1、给出的解决方案基本都是
1)看下配置文件中的数据库信息是否有问题
2)配置文件中的mybatis中的配置是否有问题
等等等,但这些都没有解决我的问题,我的问题究竟是什么,下面会提到。
2、然后给出了一个显式配置qlSessionFactory
或 SqlSessionTemplate
的解决方案也确实有用。
1)添加两个配置类,其中的数据库连接信息和@MapperScan("com.ma.mapper")中的信息,按照你们自己的实际填写
package com.ma.config;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
return DataSourceBuilder.create()
.url("jdbc:mysql://localhost:3306/myfeature?characterEncoding=utf-8&serverTimezone=Asia/Shanghai")
.username("root")
.password("123456")
.driverClassName("com.mysql.cj.jdbc.Driver")
.build();
}
}
package com.ma.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@Configuration
@MapperScan("com.ma.mapper")
public class MyBatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath:mapper/*.xml"));
return sessionFactory.getObject();
}
}
2)在启动类上也添加@MapperScan("com.ma.mapper"),这样就解决问题了。
3、但是那我配置文件岂不是没有用到,然后我就一直在查找解决办法,各种尝试。最终找到了原因,就是启动类上的一个注解的属性值导致的。
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
exclude
属性指定了两个要排除的自动配置类:
1)DataSourceAutoConfiguration.class
:这个类是 Spring Boot 用于自动配置数据源的。如果你不希望 Spring Boot 自动配置数据源,可以通过排除这个类来禁用它。
2)HibernateJpaAutoConfiguration.class
:这个类是 Spring Boot 用于自动配置 Hibernate JPA 的。如果你不希望 Spring Boot 自动配置 Hibernate JPA,可以通过排除这个类来禁用它。
4、把这个数据的属性值清空就解决问题了。
package com.ma;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class lanuch {
public static void main(String[] args) {
SpringApplication.run(lanuch.class, args);
}
}
完结撒花!!!

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)