Python 官方文档:入门教程 => 点击学习
目录前言源码环境开发工具 sql脚本 正文单工程POM文件(注意) application.properties(注意)自定义配置(注意)实体类(注意)
使用 MyBatis-Plus 可以减少大量的开发时间,单表的增删改查可以不用写 sql 语句。
本博客主要说明整合需要特别注意的地方。
本博客分别构建了一个单工程项目以及一个多工程项目,主要分析单工程项目的细节。
如有不正确的地方,欢迎指正。
GitHub地址:https://github.com/intomylife/springBoot
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','打蛋器','用来搅拌鸡蛋');
<?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>
# 端口
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-plus
mybatis-plus.mapper-locations=classpath:com/zwc/base/mapper/xml
@Configuration
public 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;
@Data
public 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 中获取源码。
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
public class SpringbootMybatisPlusServiceImpl extends ServiceImpl<SpringbootMybatisPlusMapper,SpringbootMybatisPlus> implements SpringbootMybatisPlusService {
// 这里只贴出了关键需要注意的代码块
...
}
需继承 MyBatis-Plus 的 ServiceImpl 类,即可调用 baseMapper 中的方法。如果还需调用其他自定义的 Mapper ,就用@Resource 注解注入
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);
}
增删改查的方法各有一例
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 接口
以上就是单工程整合 MyBatis-Plus 需要注意的地方,下面说说多工程项目的结构
为什么要构建多工程?
一般在实际工作中,项目的代码量会很大,而且随着时间的推移,还要不停的追加新的功能,如果开始不注意,全部笼统的写到一个工程中,那样越到后面开发就会越困难。
如何划分模块?
一般开发中会将公共的部分提取出来,比如工具类,系统常量,公共配置等等.. 它们通常叫做 commons 工程;
还有一部分就是带有业务逻辑的工程,里面可能会包含 基础模块,用户模块,订单模块等等...,
它们通常叫做 service工程。
<?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
## 扫描 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
其他代码就与单工程差不多一致了
把多工程项目使用 IntelliJ IDEA 打开
到此 SpringBoot 整合 MyBatis-Plus 就结束了,关键的点就这么多,多多尝试,一定会成功的!
到此这篇关于SpringBoot整合MyBatis-Plus的示例代码的文章就介绍到这了,更多相关SpringBoot整合MyBatis-Plus内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: SpringBoot整合MyBatis-Plus的示例代码
本文链接: https://lsjlt.com/news/141589.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0