上篇文章介绍了使用IDEA新建一个简单的Spring Boot项目。本篇将介绍Spring Boot项目结构以及项目如何整合MySQL和MyBatis-Plus,本文主要是介绍MyBatis-Plus的功能用法,使之能够快速开发Spring Boot项目。
MySQL 是IT行业最流行的开放源代码的数据库管理系统之一,它同时也是一个支持多线程高并发多用户的关系型数据库管理系统。
MySql大家自行下载安装,推荐使用数据库可视化工具Navicat进行操作。
MySql官网: https://www.mysql.com/
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。(来自官网)
简单的说就是MyBatis-Plus对于数据库的基础操作做了封装,更方便使用了。
MyBatis-Plus官网: https://baomidou.com/
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>
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
@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 在字段上
UserMapper对象操作user表,MyBatis需要自己去建xml文件自己去实现sql语句而MyBatis-Plus底层已经帮我们写好了sql语句,封装接口方便我们能够快速开发。看下MyBatis-Plus提供的CRUD接口。
// 插入一条记录
int insert(T entity);
// 根据 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);
// 根据 whereEntity 条件,更新记录
int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);
// 根据 ID 修改
int updateById(@Param(Constants.ENTITY) T entity);
// 根据 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);
insert插入数据
引入UserMapper对象,新建addUser方法,向user表中插入数据。最后一条插入的数据是李彦宏。此时我们看到麻花藤爸爸的头像是为空。
本篇文章记录了Spring Boot 整合MySql以及使用MyBatis-Plus操作数据库。MyBatis-Plus还有很多对外提供的接口以及插件没有介绍到,比如分页插件,乐观锁,动态表明,后期学习到了会一一记录。