在构建SpringBoot项目+Mybatis时,出现Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required异常,经过多次试错和求证,发现是Springboot版本和mybatisplus版本不适配的问题。

1.SpringBoot版本3.0以下

可以降低MybatisPlus版本至3.5.3版本以下,重新构建项目

1.引入必要的mysqlJar包

官方链接:MySQL :: Download Connector/Jicon-default.png?t=N7T8https://dev.mysql.com/downloads/connector/j/

 2.引入依赖

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>3.5.3.1</version>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
   <groupId>com.mysql</groupId>
   <artifactId>mysql-connector-j</artifactId>
   <scope>runtime</scope>
</dependency>
<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <optional>true</optional>
</dependency>

3.0版本以下的版本可以选择不引入spring-boot-starter-data-jdbc依赖

2.Spring版本为3.0版本以上

使用Springboot内置的mysql,引入依赖

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>3.5.3.1</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

3.配置接口(以UserMapper为例)
public interface UserMapper extends BaseMapper<User> {

}

继承了BaseMapper,将泛型改为自己所要查表的User类

4.创建查表User类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

为了减少构造方法,提升开发效率,所以引入了Lombok,直接导入@Data,@NoArgsConstructor,@AllArgsConstructor实现有参和无参构造

5.实现测试类
@SpringBootTest
public class MybatisPlusTest {
    @Autowired
    private UserMapper userMapper;


    @Test
    public void testSelectList(){
       List<User> list= userMapper.selectList(null);
        list.forEach(System.out::println);
    }
}

自定义Test类可导入@SpringBootTest,通过@Autowired注解导入自己的查表类,用注解@Test标注自己的测试方法,在内部实现查表

注意:userMapper会报错,这是因为接口类实例化的对象SpringBoot不能确定自动装配方法是否生效,但是在实际运行过程中时没有问题的。

6.yml文件配置及主应用类的配置
spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/cppsql?serverTimezone=GMT%2B8&characterEncoding=utf-8&userSSl=false
    username: root
    password: 123456

主应用类需要加入@MapperScan("mapper接口所在的包路径")

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐