spring boot mybatis-plus,spring mybatis plus

  spring boot mybatis-plus,spring mybatis plus

  

目录

前言源码环境开发工具结构化查询语言脚本正文单工程砰的一声文件(注意)应用程序.属性(注意)自定义配置(注意)实体类(注意)映射器接口(注意)服务服务实现类(注意)控制器前端控制器(注意)跳羚启动类(注意)启用项目,调用接口(注意)多工程英国国会下院工程- POM文件迈巴蒂斯-普鲁斯蒙斯工程-系统.属性共享工程-自定义配置英国国会下院工程-项目结构服务工程-项目结构结语

 

  

前言

使用MyBatis-Plus可以减少大量的开发时间,单表的增删改查可以不用写结构化查询语言语句。

 

  本博客主要说明整合需要特别注意的地方。

  本博客分别构建了一个单工程项目以及一个多工程项目,主要分析单工程项目的细节。

  如有不正确的地方,欢迎指正。

  

源码

GitHub地址:https://github。com/into my life/弹簧靴

 

  

环境

JDK 1号。8 .0 Maven 3.0 MySQL 5。6 .17弹簧护套2。0 .3

 

  

开发工具

智能j理念

 

  

SQL脚本

如果存在“springboot_mybatis_plus”,则删除表格;创建表` spring boot _ mybatis _ plus `(` id ` bigint(20)unsigned NOT NULL AUTO _ INCREMENT COMMENT 自增ID , type` varchar(2)默认空注释生活用品类别:1.家电类2.厨具, name varchar(50)默认空注释生活用品名称, description varchar(200)默认空注释生活用品描述,主键(` id `)使用BTREE)ENGINE=InnoDB DEFAULT CHARSET=utf8mb 4 ROW _ FORMAT=COMPACT COMMENT= spring boot整合mybatis-plus测试表;插入springboot_mybatis_plus(类型、名称、描述)值( 1 ,电饭煲,用来蒸饭),(1,电热壶,用来烧水), (1,空调,用来制冷或制热),(2,菜刀,用来切菜), (2,刨子,用来剥皮),(2,打蛋器,用来搅拌鸡蛋);

 

  

正文

 

  

单工程

 

  

POM文件(注意)

?可扩展标记语言版本=1.0 编码=UTF八号?项目xmlns= http://maven。阿帕奇。org/POM/4。0 .0 xmlns : xsi= http://www。w3。org/2001/XML schema-instance xsi :架构位置= http://maven。阿帕奇。org/POM/4。0 .0 http://maven.apache.org/xsd/maven-4.0.0.xsd模型版本4。0 .0/车型版本!-继承父-父groupIdorg.springframework.boot/groupId人工弹簧-启动-母公司/version2.0.3.RELEASE/version/parent!人工弹簧-三坐标-groupId com . zwc/groupId artifactIdspringboot-my batis-plus-single

 

  lt;/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>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources</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>Maven 项目的核心文件,用来管理项目的依赖依赖 mybatis-plus-boot-starter 后就把 MyBatis-Plus 整合到 SpringBoot 中了

 

  

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/*.xmlmybatis-plus.type-aliases-package=com.zwc.base.domain# 日志logging.level.com.zwc.base.mapper=debug

SpringBoot 会默认读取加载 resources 文件夹下的 application.properties 文件里的配置信息配置mybatis-plus:mapper-locations - > mapper 文件的位置;type-aliases-package - > 实体类所在的包

 

  

自定义配置(注意)

package com.zwc.base.config; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration; /** * @ClassName MyBatisPlusConfig * @Desc TODO mybatis-plus 配置 * @Date 2019/3/26 16:00 * @Version 1.0 */@Configurationpublic class MyBatisPlusConfig { /* * @ClassName MyBatisPlusConfig * @Desc TODO mybatis-plus 配置拦截 * @Date 2019/3/26 18:13 * @Version 1.0 */ @Bean public PaginationInterceptor paginationInterceptor(){ PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // 设置方言 paginationInterceptor.setDialectType("mysql"); return paginationInterceptor; }}

@Configuration +@Bean 注解 注入PaginationInterceptor 类 配置MyBatis-Plus 分页插件设置方言为 MySQL 数据库

 

  

实体类(注意)

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

 

  

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;/** * @ClassName SpringbootMybatisPlus * @Desc TODO springboot整合mybatis-plus测试表 * @Date 2019/3/26 17:45 * @Version 1.0 */@Datapublic class SpringbootMybatisPlus extends Model<SpringbootMybatisPlus> { private static final long serialVersionUID = -7876888313791106541L; /** * 自增ID */ @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;/* * @ClassName SpringbootMybatisPlusMapper * @Desc TODO springboot整合mybatis-plus测试表 mapper 接口 * @Date 2019/3/26 17:52 * @Version 1.0 */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;/** * @ClassName SpringbootMybatisPlusController * @Desc TODO springboot整合mybatis-plus测试表 前端控制器 * @Date 2019/3/26 18:14 * @Version 1.0 */@RestController@RequestMapping("smpc")public class SpringbootMybatisPlusController { @Autowired private SpringbootMybatisPlusService springbootMybatisPlusService; /* * @ClassName SpringbootMybatisPlusController * @Desc TODO 新增数据 * @Date 2019/3/27 11:40 * @Version 1.0 */ @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 接口

 

  

 

  

启用项目,调用接口(注意)

端口:8081(具体可以根据自己的喜好,在 application.properties 配置文件中配置 server.port)新增接口:http://localhost:8081/smpc/add删除接口:http://localhost:8081/smpc/delete更新接口:http://localhost:8081/smpc/update分页查询接口:http://localhost:8081/smpc/query项目结构

 

  以上就是单工程整合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-Pluscommons 工程 - system.properties

# mybatis-plus## 扫描 mapper 文件mybatis-plus.mapper-locations=classpath*:com/zwc/*/mapper/xml/*.xml## 扫描实体类mybatis-plus.type-aliases-package=com.zwc.*.domain

一些共用配置,不经常修改的,或者是可以统一修改的这里扫描 Mapper 文件和实体类都用了通配符的方式比如还可以配置 OSS 的配置信息,Redis 的配置信息,MongoDB 的配置信息等等..

 

  

commons 工程 -自定义配置

package com.zwc.core.config; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;/** * @ClassName MyBatisPlusConfig * @Desc TODO mybatis-plus 配置 * @Date 2019/3/26 16:00 * @Version 1.0 */@Configuration@PropertySource("classpath:system.properties")public class MyBatisPlusConfig { /* * @ClassName MyBatisPlusConfig * @Desc TODO mybatis-plus 配置拦截 * @Date 2019/3/26 18:13 * @Version 1.0 */ @Bean public PaginationInterceptor paginationInterceptor(){ PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // 设置方言 paginationInterceptor.setDialectType("mysql"); return paginationInterceptor; }}

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

 

  

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

 

  

 

  

commons 工程 - 项目结构

 

  

 

  

service 工程 - 项目结构

 

  在 service 总工程中创建了一个 base-service 的基础模块每一个模块中都包含 api 和 core

 

  api:主要包含接口,常量以及实体类的扩展类

 

  core:带有启动类的工程,此模块的核心代码都在里面把多工程项目使用 IntelliJ IDEA 打开

  把项目从 GitHub 中下载到你的本地打开 IntelliJ IDEA点击 File -> Open打开你下载到本地的项目目录springboot-mybatis-plus -> multi-module -> springboot-mybatis-plus-service(选择打开此工程)打开 service 工程后再次点击 File -> Project Structrue选择 Modules,点击 '+' 符号点击 Import Module还是打开你下载到本地的项目目录springboot-mybatis-plus -> multi-module -> springboot-mybatis-plus-commons -> pom.xml点击 OK点击 Next,Finish点击 Apply,OK

 

  

结语

到此 SpringBoot 整合 MyBatis-Plus 就结束了,关键的点就这么多,多多尝试,一定会成功的!

 

  到此这篇关于SpringBoot整合MyBatis-Plus的示例代码的文章就介绍到这了,更多相关SpringBoot整合MyBatis-Plus内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: