SpringBoot 整合Mybatis-plus

122 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第 1 天,点击查看活动详情

前言:最近学习了SpringBoot和mybatis-plus,但是对SpringBoot整合Mybatis-plus的一整个流程还是较为模糊的,因此写该文记录一下相应的流程以及中间遇到的问题。

准备阶段

1.1 环境

SpringBoot:2.7.4

Maven:apache maven 3.8.1

mysql:5.7

mybatis-plus:3.3

1.2 项目结构

image.png

1.3 配置文件

1.3.1 pom.xml(下面代码只放了需要的导入的依赖)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--简化实体类--> 
<dependency> 
    <groupId>org.projectlombok</groupId> 
    <artifactId>lombok</artifactId> 
    <optional>true</optional> 
</dependency>
<!-- mybatis-plus 依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.1</version>
</dependency>
<!-- mysql 依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

1.3.2 application.properties

server.port=xxx
spring.datasource.url=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.show-sql=true
mybatis-plus.type-aliases-package=com.example.*.entity  # 对应实体类所在的路径
mybatis-plus.mapper-locations=classpath*:com/example/**/mapper/xml/*.xml  # 对应Mapper.xml所在的路径

编写阶段

2.1 实体类

Mybatis-plus中提供了@TableName注解,该注解可以将指定的数据库与JavaBean进行映射,提高开发效率.有效的使用注解可以大大的加快我们的开发效率.

@TableName注解常用的属性有valueschemavalue的值用于与数据库表名对应,而schema则是用于指定模式名称,在mysql中为数据库名称,而在oracledb2中则是schema

image.png

2.2 Mapper

Mybatis-plus已经为我们实现了BaseMapper接口类,该接口类封装了许多与数据库增删改查有关的接口,我们的实体类接口只需继承该接口类即可。

image.png

2.3 Service and ServiceImpl

Mabatis-plus将一些通用Service接口提取到了IService类中,减少重复的代码工作。IService的使用需要另外两个接口的配合:baseMapperServiceImpl。ServiceImpl是Service的实现类,对应的业务逻辑在ServiceImpl类中进行处理。

UserServivce类

image.png

UserServiceImpl类

image.png

2.4 Controller 与启动类

Controller层主要是处理外部请求,调用service层,将service层的结果封装成统一对象进行返回。

image.png

启动类:

image.png

执行出错

3.1 Automatic assembly is not possible. A bean of type 'UserMapper' could not be found. ...... Error creating bean with name ‘sqlSessionFactory‘ defined in class path ......

查看信息可知是启动时sqlSessionFactory创建出现了问题以及UserMapper没有正确装配,于是查看对应的配置文件,发现application.properties中 如下两字段填写错误,于是进行修改。

mybatis-plus.type-aliases-package=com.example.*.entity
mybatis-plus.mapper-locations=classpath*:com/example/**/mapper/xml/*.xml

修改后发现还是报错Error creating bean with name ‘sqlSessionFactory‘ defined in class path ......,于是查看pom.xml文件发现多加了一个包,删除后成功运行.

image.png