在构建SpringBoot项目+Mybatis时,出现Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required异常,经过多次试错和求证,发现是Springboot版本和mybatisplus版本不适配的问题。
1.SpringBoot版本3.0以下
可以降低MybatisPlus版本至3.5.3版本以下,重新构建项目
1.引入必要的mysqlJar包
官方链接:MySQL :: Download Connector/Jhttps://dev.mysql.***/downloads/connector/j/
2.引入依赖
<dependency>
<groupId>***.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>***.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>***.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>***.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: ***.zaxxer.hikari.HikariDataSource
driver-class-name: ***.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/cppsql?serverTimezone=GMT%2B8&characterEncoding=utf-8&userSSl=false
username: root
password: 123456
主应用类需要加入@MapperScan("mapper接口所在的包路径")