在构建SpringBoot项目+Mybatis时,出现Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required异常,经过多次试错和求证,发现是Springboot版本和mybatisplus版本不适配的问题。
可以降低MybatisPlus版本至3.5.3版本以下,重新构建项目
1.引入必要的mysqlJar包
官方链接:MySQL :: Download Connector/Jhttps://dev.mysql.com/downloads/connector/j/
2.引入依赖
com.baomidou mybatis-plus-boot-starter3.5.3.1 org.springframework.boot spring-boot-starter-data-jdbccom.mysql mysql-connector-jruntime org.projectlombok lomboktrue
3.0版本以下的版本可以选择不引入spring-boot-starter-data-jdbc依赖
使用Springboot内置的mysql,引入依赖
com.baomidou mybatis-plus-boot-starter3.5.3.1 org.springframework.boot spring-boot-starter-data-jdbccom.mysql mysql-connector-jruntime org.projectlombok lomboktrue
public interface UserMapper extends BaseMapper{ }
继承了BaseMapper,将泛型改为自己所要查表的User类
@Data @NoArgsConstructor @AllArgsConstructor public class User { private Long id; private String name; private Integer age; private String email; }
为了减少构造方法,提升开发效率,所以引入了Lombok,直接导入@Data,@NoArgsConstructor,@AllArgsConstructor实现有参和无参构造
@SpringBootTest public class MybatisPlusTest { @Autowired private UserMapper userMapper; @Test public void testSelectList(){ Listlist= userMapper.selectList(null); list.forEach(System.out::println); } }
自定义Test类可导入@SpringBootTest,通过@Autowired注解导入自己的查表类,用注解@Test标注自己的测试方法,在内部实现查表
注意:userMapper会报错,这是因为接口类实例化的对象SpringBoot不能确定自动装配方法是否生效,但是在实际运行过程中时没有问题的。
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接口所在的包路径")