飞道的博客

快速CRUD的秘诀之SpringBoot整合MyBatis-Plus

356人阅读  评论(0)
若批评不自由,则赞美无意义

前言

关于如何搭建SpringBoot工程以及开启Web功能,
可以查看我的这篇博客:用Spring Initializr快速构建SpringBoot及整合MVC

Mybatis-Plus

在我的上篇博客中 -> 史上踩坑最多的SpringBoot整合MyBatis 中介绍了SpringBoot整合MyBatis,那这个MyBatis-Plus又是什么来头?升级版吗?我们先来看一下Mybatis的图标:

再来看一下,MyBatis-Plus的图标:

其实MyBatis-Plus是MyBatis的增强工具,就如MyBatis-Plus官网:https://mp.baomidou.com/ 上说的一样,为简化开发而生,主要特点有:

  • 润物无声,在MyBatis的基础上只做增强而不做改变,引入没有其他影响。
  • 效率至上,快速进行CRUD操作,从而节省大量时间。
  • 丰富功能,热加载、代码生成、分页、性能分析等功能一应俱全。

数据库部分

本文使用的是MySQL数据库,需要读者自行下载

在数据库中"mydb"中创建一张表"users",建表语句如下:

create table users # 创建表users
(					# 整型 不为空 自动增长
	id 				int not null auto_increment, 
	username		varchar(50), # 可变字符串,最长为50
	password		varchar(50), # 可变字符串,最长为50
	primary key (id) # 设置id为主键
)

往"users"表中插入两条数据,sql语句如下:

insert into users(username, password) values('古阙月', '123456');
insert into users(username, password) values('月阙古', '654321');

最后,"users"表中数据为:

开整

1.分别在依赖管理文件中导入Web的起步依赖spring-boot-starter-web,MySQL数据库的连接器依赖mysql-connector-java以及MyBatis-Plus的起步依赖mybatis-plus-boot-starter,代码如下:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope> <!-- 作用域:表示运行时才生效-->
</dependency>
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.2.0</version>
</dependency>

2.在配置文件application.yml中配置数据源,如:

# 配置数据源
spring:
  datasource:
    # 数据库路径jdbc:mysql://localhost:3306/mydb 的缩写,并配置时区
    url: jdbc:mysql:///mydb?serverTimezone=GMT%2B8
    username: root          # 用户名
    password: 123456        # 密码
    driver-class-name: com.mysql.cj.jdbc.Driver # 数据库驱动

3.创建实体类,如:

package com.guqueyue.entity;

/**
 * @author guqueyue
 * @Date 2020/4/12
 **/
//lombok插件的注解
@Data // 若未使用lombok插件,请自行生成getter、setter以及toString方法
@AllArgsConstructor // 若未使用lombok插件,请自行生成有参构造方法
@NoArgsConstructor // 若未使用lombok插件,请自行生成无参构造方法
@Accessors(chain = true) // 开启链式编程
@TableName("users") // 因为实体类和表名不一致, 需要进行配置
public class User implements Serializable {

    private Integer id;
    private String username;
    private String password;
}

其中实体类的类名与实例变量名 数据库中的表名与列名需一一对应,否则我们就需要另行配置,其中@TableName注解为表名注解,@TableId注解为主键注解以及@TableField注解为字段注解…关于注解的详细信息以及MyBatis-Plus的其他注解官方文档上都有,我就不一一赘述 -> 点击即可查看

4.创建DAO层的映射接口,并继承MyBatis-Plus的公共接口,代码如下:

package com.guqueyue.dao;

/**
 * @author guqueyue
 * @Date 2020/4/12
 * 映射接口UserMapper
 **/
public interface UserMapper extends BaseMapper<User> {

}

5.在启动类上使用@MapperScan,扫描映射接口,如:

package com.guqueyue.hello_guqueyue;

@SpringBootApplication(scanBasePackages = "com.guqueyue")
@MapperScan("com.guqueyue.dao")
public class HelloGuqueyueApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloGuqueyueApplication.class, args);
    }
}

6.创建Service层的接口,并继承MyBatis-Plus的公共接口,如:

package com.guqueyue.service;

/**
 * @author guqueyue
 * @Date 2020/4/12
 **/
public interface IUserService extends IService<User> {
    
}

7.创建Service层的实现类,添加@Service注解,并继承MyBatis-Plus的公共接口以及实现Service层的接口,代码如下:

/**
 * @author guqueyue
 * @Date 2020/4/12
 **/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {

}

8.创建Controller层,使用@Autowired注解注入Service层的实现类对象,代码如下:

package com.guqueyue.controller;

/**
 * @author guqueyue
 * @Date 2020/4/12
 **/
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserServiceImpl userService;

    /**
     * 查询用户列表
     * @return
     */
    @RequestMapping("/list")
    public List<User> userList() {

        return userService.list();
    }
}

9.最后一步,启动应用程序,打开浏览器输入"http://localhost:8080/user/list",浏览器显示:

说明整合成功!!!

扩展

一般来说,MyBatis-Plus自带的足以应付单表的CRUD,而不需要配置一些杂七杂八的配置文件,更别提写什么sql语句。但是如果一旦涉及到多表的增删改查,我们可能就要进行一些额外的配置了。当然,配置的话,MyBatis-Plus和MyBatis差不多,也不会很麻烦,下面开始吧!

1.首先,在src/main/java/com/guqueyue/dao目录下也就是dao层配置映射文件UserMapper.xml,如:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.guqueyue.dao.UserMapper">


</mapper>

2.其次,在配置文件application.yml中,配置映射文件的扫描,如:

mybatis-plus:
  # 配置映射文件的扫描
  mapper-locations: classpath:com/guqueyue/dao/*.xml
  # 配置别名的扫描
  type-aliases-package: com.guqueyue.entity

3.然后,去依赖管理文件pom.xml中的中进行配置,以便SpringBoot能够扫到映射文件UserMapper.xml

<resources>
	<!-- 使SpringBoot扫到映射文件 -->
	<resource>
		<directory>src/main/java</directory>
	<includes>
		<include>com/guqueyue/dao/*.xml</include>
	</includes>
	</resource>

<!-- 防止配置之后出现不扫resources的bug -->
	<resource>
		<directory>src/main/resources</directory>
	</resource>
</resources>

大功告成!


转载:https://blog.csdn.net/Qizhi_Hu/article/details/105476327
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场