文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringBoot如何整合MyBatis-Plus

2023-06-29 09:48

关注

这篇文章主要为大家展示了“SpringBoot如何整合MyBatis-Plus”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot如何整合MyBatis-Plus”这篇文章吧。

环境

开发工具

 SQL脚本 

DROP TABLE IF EXISTS `springboot_mybatis_plus` ;CREATE TABLE `springboot_mybatis_plus` (  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',  `type` varchar(2) DEFAULT NULL COMMENT '生活用品类别:1. 家电类 2. 厨具',  `name` varchar(50) DEFAULT NULL COMMENT '生活用品名称',  `description` varchar(200) DEFAULT NULL COMMENT '生活用品描述',  PRIMARY KEY (`id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='springboot整合mybatis-plus测试表'; INSERT INTO springboot_mybatis_plus ( type , name , description )VALUES ('1','电饭煲','用来蒸饭'),('1','电热壶','用来烧水'),       ('1','空调','用来制冷或制热'),('2','菜刀','用来切菜'),       ('2','刨子','用来剥皮'),('2','打蛋器','用来搅拌鸡蛋');

正文

单工程

POM文件(注意)
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>     <!-- 继承父 -->    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.0.3.RELEASE</version>    </parent>     <!-- 三坐标 -->    <groupId>com.zwc</groupId>    <artifactId>springboot-mybatis-plus-single</artifactId>    <version>0.0.1-SNAPSHOT</version>     <!-- 工程名称和描述 -->    <name>springboot-mybatis-plus-single</name>    <description>springboot整合mybatis-plus</description>     <!-- 打包方式 -->    <packaging>jar</packaging>     <!-- 在properties下声明相应的版本信息,然后在dependency下引用的时候用${spring-version}就可以引入该版本jar包了 -->    <properties>        <!-- 编码 -->        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <!-- jdk -->        <java.version>1.8</java.version>        <!-- ali 连接池 -->        <druid.version>1.1.9</druid.version>        <!-- ali json -->        <fastjson.version>1.2.47</fastjson.version>        <jackson.mapper.asl.version>1.9.9</jackson.mapper.asl.version>         <!-- mybatis -->        <mybatis-plus-boot-starter.version>3.0-RELEASE</mybatis-plus-boot-starter.version>        <mybatis-spring-boot-starter.version>1.3.2</mybatis-spring-boot-starter.version>        <mybatis.ehcache.version>1.1.0</mybatis.ehcache.version>    </properties>     <dependencies>        <!-- springboot 依赖 -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>         <!-- ali 连接池依赖 -->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid-spring-boot-starter</artifactId>            <version>${druid.version}</version>        </dependency>         <!-- ali json依赖 -->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>fastjson</artifactId>            <version>${fastjson.version}</version>        </dependency>        <dependency>            <groupId>org.codehaus.jackson</groupId>            <artifactId>jackson-mapper-asl</artifactId>            <version>${jackson.mapper.asl.version}</version>        </dependency>         <!-- mybatis 依赖 -->        <dependency>            <groupId>org.mybatis.spring.boot</groupId>            <artifactId>mybatis-spring-boot-starter</artifactId>            <version>${mybatis-spring-boot-starter.version}</version>        </dependency>        <dependency>            <groupId>com.baomidou</groupId>            <artifactId>mybatis-plus-boot-starter</artifactId>            <version>${mybatis-plus-boot-starter.version}</version>        </dependency>        <dependency>            <groupId>org.mybatis.caches</groupId>            <artifactId>mybatis-ehcache</artifactId>            <version>${mybatis.ehcache.version}</version>        </dependency>         <!-- mysql 依赖 -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>        </dependency>         <!-- 自动生成get,set方法 依赖 -->        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>        </dependency>         <!-- springboot 测试依赖 -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>    </dependencies>     <build>        <resources>            <!-- 打包时 maven 默认只打包 src/main/resource 下的资源 -->            <!-- 这里自定义要打包的资源文件的路径,一般是 Mapper 文件的位置 -->            <resource>                <directory>src/main/java</directory>                <includes>                    <include>***</include>                </includes>                <filtering>true</filtering>            </resource>        </resources>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build> </project>
 application.properties(注意)
# 端口server.port=8081 # 数据源 ## 驱动spring.datasource.driver-class-name=com.mysql.jdbc.Driver## url 注意把数据库换成你本地的数据库名称spring.datasource.url=jdbc:mysql://127.0.0.1:3306/base_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=PRC&useSSL=false## 用户名 注意把用户名换成你本地的用户名spring.datasource.username=root## 密码 注意把密码换成你本地的密码spring.datasource.password=123456 # mybatis-plusmybatis-plus.mapper-locations=classpath:com/zwc/base/mapper/xml@Configurationpublic class MyBatisPlusConfig {         @Bean    public PaginationInterceptor paginationInterceptor(){        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();        // 设置方言        paginationInterceptor.setDialectType("mysql");        return paginationInterceptor;    }}
实体类(注意)

基础实体类,与数据库字段一一对应

package com.zwc.base.domain; import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableId;import com.baomidou.mybatisplus.extension.activerecord.Model;import lombok.Data;import java.io.Serializable;@Datapublic class SpringbootMybatisPlus extends Model<SpringbootMybatisPlus> {    private static final long serialVersionUID = -7876888313791106541L;        @TableId(value = "id", type = IdType.AUTO)    private Long id;     * 生活用品类别:1. 家电类 2. 厨具    private String type;     * 生活用品名称    private String name;     * 生活用品描述    private String description;    public static final String ID = "id";    public static final String TYPE = "type";    public static final String NAME = "name";    public static final String DESCRIPTION = "description";    @Override    protected Serializable pkVal() {        return this.id;    }}

需继承 MyBatis-Plus 的 Model 类,使用 @TableId 注解标注 id 字段

还有两个扩展实体类:封装请求参数(SpringbootMybatisPlusRequestQueryDTO)以及

                                    封装响应结果(SpringbootMybatisPlusResponseDTO)

这里就不占篇幅了,可以到 GitHub 中获取源码。

Mapper 接口(注意)
package com.zwc.base.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.zwc.base.domain.SpringbootMybatisPlus;import com.zwc.base.dto.request.SpringbootMybatisPlusRequestQueryDTO;import com.zwc.base.dto.response.SpringbootMybatisPlusResponseDTO;import org.apache.ibatis.annotations.Param;import java.util.List;public interface SpringbootMybatisPlusMapper extends BaseMapper<SpringbootMybatisPlus> {    // 分页查询测试表数据    List<SpringbootMybatisPlusResponseDTO> query(@Param("data") SpringbootMybatisPlusRequestQueryDTO springbootMybatisPlusRequestQueryDTO , Page<SpringbootMybatisPlusResponseDTO> page);}

需继承 MyBatis-Plus 的 BaseMapper 接口,注意类型是继承过 MyBatis-Plus 的 Model 类的实体类。BaseMapper 定义了很多函数,方便开发使用

Service 服务实现类(注意)
@Servicepublic class SpringbootMybatisPlusServiceImpl extends ServiceImpl<SpringbootMybatisPlusMapper,SpringbootMybatisPlus> implements SpringbootMybatisPlusService {    // 这里只贴出了关键需要注意的代码块    ...}

需继承 MyBatis-Plus 的 ServiceImpl 类,即可调用 baseMapper 中的方法。如果还需调用其他自定义的 Mapper ,就用@Resource 注解注入

Controller 前端控制器(注意)
package com.zwc.base.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.zwc.base.dto.request.SpringbootMybatisPlusRequestQueryDTO;import com.zwc.base.dto.response.SpringbootMybatisPlusResponseDTO;import com.zwc.base.service.SpringbootMybatisPlusService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("smpc")public class SpringbootMybatisPlusController {    @Autowired    private SpringbootMybatisPlusService springbootMybatisPlusService;        @RequestMapping("/add")    @ResponseBody    public String add(){        return springbootMybatisPlusService.add();    }     * @Desc TODO   删除数据     * @Date 2019/3/27 13:15    @RequestMapping("/delete")    public String delete(){        return springbootMybatisPlusService.delete();     * @Desc TODO   更新数据     * @Date 2019/3/27 13:46    @RequestMapping("/update")    public String update(){        return springbootMybatisPlusService.update();     * @Desc TODO   分页查询测试表数据     * @Date 2019/3/26 18:10    @RequestMapping("/query")    public Page<SpringbootMybatisPlusResponseDTO> query(@RequestParam(value = "springbootMybatisPlusRequestQueryDTO",required = false) SpringbootMybatisPlusRequestQueryDTO springbootMybatisPlusRequestQueryDTO){        return springbootMybatisPlusService.getDataByPage(springbootMybatisPlusRequestQueryDTO);}

 增删改查的方法各有一例

SpringBoot 启动类(注意)
package com.zwc; import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication(scanBasePackages = "com.zwc")@MapperScan("com.zwc.base.mapper")public class SpringbootMybatisPlusSingleApplication {     public static void main(String[] args) {        SpringApplication.run(SpringbootMybatisPlusSingleApplication.class, args);    } }

使用 @MapperScan 注解扫描 Mapper 接口

启用项目,调用接口(注意)
  1.  端口:8081(具体可以根据自己的喜好,在 application.properties 配置文件中配置 server.port)

  2. 新增接口:http://localhost:8081/smpc/add

  3. 删除接口:http://localhost:8081/smpc/delete

  4. 更新接口:http://localhost:8081/smpc/update

  5. 分页查询接口:http://localhost:8081/smpc/query项目结构 

SpringBoot如何整合MyBatis-Plus

以上就是单工程整合 MyBatis-Plus 需要注意的地方,下面说说多工程项目的结构

多工程

为什么要构建多工程?

一般在实际工作中,项目的代码量会很大,而且随着时间的推移,还要不停的追加新的功能,如果开始不注意,全部笼统的写到一个工程中,那样越到后面开发就会越困难。

如何划分模块?

一般开发中会将公共的部分提取出来,比如工具类,系统常量,公共配置等等.. 它们通常叫做 commons 工程;

还有一部分就是带有业务逻辑的工程,里面可能会包含 基础模块,用户模块,订单模块等等...,

它们通常叫做 service工程。

commons 工程 - POM 文件
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>     <!-- 三坐标 -->    <groupId>com.zwc</groupId>    <artifactId>springboot-mybatis-plus-commons</artifactId>    <version>0.0.1-SNAPSHOT</version>     <!-- 工程名称和描述 -->    <name>springboot-mybatis-plus-commons</name>    <description>公用工程</description>     <!-- 打包方式 -->    <packaging>jar</packaging>     <!-- 在properties下声明相应的版本信息,然后在dependency下引用的时候用${spring-version}就可以引入该版本jar包了 -->    <properties>        <!-- 编码 -->        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <!-- jdk -->        <java.version>1.8</java.version>         <!-- springboot -->        <platform-bom.version>Cairo-SR3</platform-bom.version>         <!-- ali 连接池 -->        <druid.version>1.1.9</druid.version>        <!-- ali json -->        <fastjson.version>1.2.47</fastjson.version>        <jackson.mapper.asl.version>1.9.9</jackson.mapper.asl.version>         <!-- mybatis -->        <mybatis-plus-boot-starter.version>3.0-RELEASE</mybatis-plus-boot-starter.version>        <mybatis-spring-boot-starter.version>1.3.2</mybatis-spring-boot-starter.version>        <mybatis.ehcache.version>1.1.0</mybatis.ehcache.version>    </properties>     <!-- 加入依赖 -->    <dependencies>        <!-- ali 连接池依赖 -->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid-spring-boot-starter</artifactId>            <version>${druid.version}</version>        </dependency>         <!-- mysql 依赖 -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>        </dependency>         <!-- ali json依赖 -->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>fastjson</artifactId>            <version>${fastjson.version}</version>        </dependency>        <dependency>            <groupId>org.codehaus.jackson</groupId>            <artifactId>jackson-mapper-asl</artifactId>            <version>${jackson.mapper.asl.version}</version>        </dependency>         <!-- mybatis 依赖 -->        <dependency>            <groupId>org.mybatis.spring.boot</groupId>            <artifactId>mybatis-spring-boot-starter</artifactId>            <version>${mybatis-spring-boot-starter.version}</version>        </dependency>        <dependency>            <groupId>com.baomidou</groupId>            <artifactId>mybatis-plus-boot-starter</artifactId>            <version>${mybatis-plus-boot-starter.version}</version>        </dependency>        <dependency>            <groupId>org.mybatis.caches</groupId>            <artifactId>mybatis-ehcache</artifactId>            <version>${mybatis.ehcache.version}</version>        </dependency>    </dependencies>     <!-- 依赖 jar 包版本管理的管理器 -->    <!-- 如果 dependencies 里的 dependency 自己没有声明 version 元素,那么 maven 就此处来找版本声明。 -->    <!-- 如果有,就会继承它;如果没有就会报错,告诉你没有版本信息 -->    <!-- 优先级:如果 dependencies 里的 dependency 已经声明了版本信息,就不会生效此处的版本信息了 -->    <dependencyManagement>        <dependencies>            <!-- SpringBoot -->            <dependency>                <groupId>io.spring.platform</groupId>                <artifactId>platform-bom</artifactId>                <version>${platform-bom.version}</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement>     <!-- 插件依赖 -->    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build> </project>

配置一些共用依赖,其中包括 mybatis-plus-boot-starter 依赖用来整合 

MyBatis-Plus commons 工程 - system.properties
# mybatis-plus## 扫描 mapper 文件mybatis-plus.mapper-locations=classpath*:com/zwc@Configuration@PropertySource("classpath:system.properties")public class MyBatisPlusConfig {        @Bean    public PaginationInterceptor paginationInterceptor(){        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();        // 设置方言        paginationInterceptor.setDialectType("mysql");        return paginationInterceptor;    }}

注意这里在注入类的时候,还要加载自定的配置文件,因为 SpringBoot 不会默认加载 system.properties

其他代码就与单工程差不多一致了 

commons 工程 - 项目结构

SpringBoot如何整合MyBatis-Plus

service 工程 - 项目结构

SpringBoot如何整合MyBatis-Plus

SpringBoot如何整合MyBatis-Plus

SpringBoot如何整合MyBatis-Plus

把多工程项目使用 IntelliJ IDEA  打开

以上是“SpringBoot如何整合MyBatis-Plus”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯