入门篇(二)- Spring Boot项目整合MySql和MyBatis-Plus (图文教程)

入门篇 - Spring Boot项目整合MySQL和MyBatis-Plus (图文教程)

上篇文章介绍了使用IDEA新建一个简单的Spring Boot项目。本篇将介绍Spring Boot项目结构以及项目如何整合MySQL和MyBatis-Plus,本文主要是介绍MyBatis-Plus的功能用法,使之能够快速开发Spring Boot项目。


一、MySql 与 MyBatis-Plus 简介

MySQL 是IT行业最流行的开放源代码的数据库管理系统之一,它同时也是一个支持多线程高并发多用户的关系型数据库管理系统。

MySql大家自行下载安装,推荐使用数据库可视化工具Navicat进行操作。

MySql官网: https://www.mysql.com/


MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。(来自官网)

简单的说就是MyBatis-Plus对于数据库的基础操作做了封装,更方便使用了。

MyBatis-Plus官网: https://baomidou.com/


二、Spring Boot 依赖配置

1、Maven项目的pom.xml配置依赖

在这里插入图片描述

Maven项目中的文件,在Spring Boot项目中主要用于项目的依赖管理。比如图中的mybatis-plus,mysql,以及lombok的库。

1、groupId 是项目的路径,一般是域 + 公司名
2、artifactId 依赖库的唯一标志,可以看作项目的名字
3、version 库的版本号

一个pom.xml必须包含modelVersion、groupId、artifactId和version这四个元素。在maven中,使用groupId、artifactId和version组成groupId:artifactId:version 来表示每个库的唯一性。

<!-- mybatis-plus 依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.1</version>
</dependency>

<!-- MySql -->
<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>8.0.15</version>
</dependency>

<!--lombok-->
<dependency>
	 <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <optional>true</optional>
</dependency>


2、准备好MySql相关数据

a、运行MySql

在这里插入图片描述

b、使用Navicat连接MySql,新建用户表user相关字段

在这里插入图片描述

c、application.properties 或 application.yml文件配置数据库

在这里插入图片描述

连接MySql数据库需要的配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/test (自己的数据库名)?useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true
spring.datasource.username=root  //登录数据库的用户名
spring.datasource.password=HcqJ  //登录数据库的密码
spring.datasource.tomcat.max-idle=10
spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.max-active=50
spring.datasource.tomcat.min-idle=5
spring.datasource.tomcat.initial-size=5

三、项目连接MySQL数据库

在这里插入图片描述

输入登录MySql的账号和密码,连接数据库
在这里插入图片描述


四、MyBatis操作MySql数据库

1、项目启动类新增注解MapperScan

在这里插入图片描述


2、通过数据库表字段新建对应User实体类

在这里插入图片描述
介绍下User类上以及字段上的注解

@Data(依赖库lombok) :提供类的get、set、equals、hashCode、canEqual、toString方法。大幅度提高代码的简洁。

@TableId(mp 注解):主键的注解,idType的值

在这里插入图片描述
@TableField(fill = Enum)此注解表示字段自动填充,在我们新建以及更新记录时,字段上有此注解会自动向数据库中插入值

在这里插入图片描述
除了在字段上添加TableField注解之外,MyBatis-Plus还提供了接口MetaObjectHandler,自定义类去实现这个接口,在insertFill (插入),updateFill方法中对数据库中要自动填充的字段进行注册。

/*自动填充实现类*/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    /*mybatis-plus实现添加操作*/
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
        this.setFieldValByName("version",1,metaObject);
    }

    /*mybatis-plus实现更新操作*/
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
}

@Version :乐观锁注解、标记 @Verison 在字段上


3、MyBatis-Plus 操作MySql

(a)、新建UserMapper 继承 BaseMapper

在这里插入图片描述
UserMapper对象操作user表,MyBatis需要自己去建xml文件自己去实现sql语句而MyBatis-Plus底层已经帮我们写好了sql语句,封装接口方便我们能够快速开发。看下MyBatis-Plus提供的CRUD接口。

Insert 插入

// 插入一条记录
int insert(T entity);

Delete 删除

// 根据 entity 条件,删除记录
int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);
// 删除(根据ID 批量删除)
int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
// 根据 ID 删除
int deleteById(Serializable id);
// 根据 columnMap 条件,删除记录
int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);

Update 更新

// 根据 whereEntity 条件,更新记录
int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);
// 根据 ID 修改
int updateById(@Param(Constants.ENTITY) T entity);

Select 查询

// 根据 ID 查询
T selectById(Serializable id);
// 根据 entity 条件,查询一条记录
T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 查询(根据ID 批量查询)
List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
// 根据 entity 条件,查询全部记录
List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 查询(根据 columnMap 条件)
List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
// 根据 Wrapper 条件,查询全部记录
List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询全部记录。注意: 只返回第一个字段的值
List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 根据 entity 条件,查询全部记录(并翻页)
IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询全部记录(并翻页)
IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询总记录数
Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
(b)、在单元测试类中进行测试

insert插入数据

在这里插入图片描述
引入UserMapper对象,新建addUser方法,向user表中插入数据。最后一条插入的数据是李彦宏。此时我们看到麻花藤爸爸的头像是为空。

在这里插入图片描述

update更新数据
在这里插入图片描述
在这里插入图片描述


delete删除数据:

在这里插入图片描述


查询数据select:
在这里插入图片描述


结尾

本篇文章记录了Spring Boot 整合MySql以及使用MyBatis-Plus操作数据库。MyBatis-Plus还有很多对外提供的接口以及插件没有介绍到,比如分页插件,乐观锁,动态表明,后期学习到了会一一记录。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页