相关推荐recommended
MybatisPlus显示Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required异常问题
作者:mmseoamin日期:2023-12-14

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

1.SpringBoot版本3.0以下

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

1.引入必要的mysqlJar包

官方链接:MySQL :: Download Connector/JMybatisPlus显示Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required异常问题,icon-default.png?t=N7T8,第1张https://dev.mysql.com/downloads/connector/j/

 2.引入依赖


   com.baomidou
   mybatis-plus-boot-starter
   3.5.3.1


   org.springframework.boot
   spring-boot-starter-data-jdbc


   com.mysql
   mysql-connector-j
   runtime


   org.projectlombok
   lombok
   true

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

2.Spring版本为3.0版本以上

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


   com.baomidou
   mybatis-plus-boot-starter
   3.5.3.1


    org.springframework.boot
    spring-boot-starter-data-jdbc


    com.mysql
    mysql-connector-j
    runtime


    org.projectlombok
    lombok
    true
3.配置接口(以UserMapper为例)
public interface UserMapper extends BaseMapper {
}

继承了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 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接口所在的包路径")