SpringBoot - 学习笔记《集成 MyBatis-Plus》
发布日期:2021-06-30 14:53:50 浏览次数:2 分类:技术文章

本文共 5005 字,大约阅读时间需要 16 分钟。

SpringBoot - 学习笔记《集成 MyBatis-Plus》

简介

简称MP ,之前做过Spring集成MyBatis-Plus看底部参考资料。

MyBatis的各种插件无非要解决的是两个问题:

  1. 提供默认的通用增删改查功能。
  2. 支持便捷的生成自定义代码。

1. 代码生成

这方面,还有很大的优化空间。毕竟现在Mybatis插件这么多,优秀的代码生成GUI工具也不少。

  • 编码方式:今天调通了下次一用又出翔。毕竟不是一直追他的版本,升个级感觉我们又是陌生人了。之前写过 本次就不赘述了。
  • GUI界面:官方出了idea插件 但是很敷衍(copy from free mybatis plugin),文档就几张GIF,也没有详细的说明。不过留了个QQ群 829161197。毕竟是MP一套的东西,就说一说吧。勉强用来生成通用Mapper所需要的 Entity 和 Mapper 够了。(实用价值不大)

如果你之前已经安装过free mybatis plugin就会看到两个。大写开头那个才是MybatisX

在这里插入图片描述
这个界面操作起来也是非常不智能。误操作概率很大,还没历史记录。(把人家原来有的功能删了666)
下面的选项也是。。。估计留着自嗨的。
牛就牛在这东西生成的东西,并没有结合MP自己的通用Mapper、Service
在这里插入图片描述

总结

还不如直接用 人家还提供了 MP 的模板。要不你们考虑下合作多好。

EasyCode + MP通用CURD 目前是比较可行的。可悲在于,EasyCode的自定义模板很自由,MP随时有被踢掉的风险。比如有哪个热心的粉丝出一套 MP模板。。。 EasyCode 的用户就可以完全放弃 MP 了。
话说回来,有心做精品,好好合作,也是有搞头的。并非一定是谁吃了谁。
在这里插入图片描述

2. 通用Mapper、Service

对于通用的数据库操作,MyBatis-Plus提供了通用Mapper。我们使用MP时只要做两步:

  1. 创建实体
  2. 创建对应Mapper并继承BaseMapper<T>

这样通用的CURD就到手了。

关于带条件的操作慎用,因为用到了MP自己定义的。自己玩的小项目,还行。如果用于团队项目,容易被背锅。当然如果你是项目负责人能hold住也没问题。下面是简单介绍,详情看官方文档。本文底部有链接。

通用Mapper 支持

除常规CURD外,还封装了一些扩展方法:

  1. 根据 entity 条件,删除记录
  2. 根据ID 批量删除
  3. 根据 whereEntity 条件,更新记录
  4. 根据ID 批量查询
  5. 根据条件,查询记录有几个版本。

通用Service 支持

除常规CURD外,还封装了一些扩展方法:

  1. 批量插入
  2. 自动判断保存or更新、自动判断保存or更新(批量)
  3. 按条件删除
  4. 批量删除
  5. 按条件更新
  6. 根据ID批量更新
  7. 查询:单条、列表
  8. 分页查询
  9. 统计总数
  10. 按条件统计总数
  11. 链式查询
  12. 链式更改

集成演示

1. 准备工作:测试数据

测试数据直接用这个:

各种版本参考:

名称 版本
JDK 1.8
spring-boot-starter-parent 2.4.2
druid-spring-boot-starter 1.2.4
mybatis-plus-boot-starter 3.4.2

2. 添加依赖、配置文件

pom.xml

com.baomidou
mybatis-plus-boot-starter
RELEASE

application.yml

spring:  #数据库连接配置  datasource:    driverClassName: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8    username: root    password: root# Mybatis日志: 输出指定包下的日志logging:  level:    com.mybatisplus.demo.mapper: trace

3. 创建实体类

package com.mybatisplus.curd.entity;import lombok.Data;import java.io.Serializable;import java.text.SimpleDateFormat;import java.util.Date;/** * 诗词表(Poem)实体类 * * @author jerryjin * @since 2021-02-16 17:20:50 */@Datapublic class Poem implements Serializable {
private static final long serialVersionUID = 393671495535297496L; /** 主键 */ private Object id; /** 诗词标题 */ private String title; /** 诗词内容 */ private String content; /** 作者 */ private String author; /** 发表时间 */ private Date publishedTime; /** 更新时间 */ private Date updateTime; /** 创建时间 */ private Date createTime; @Override public String toString() {
return id + ":《" + title + "》\n-" + author + " " + (new SimpleDateFormat("YYYY-MM")).format(publishedTime) + "\n" + content + "\n" ; }}

4. 创建Mapper

package com.mybatisplus.curd.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.mybatisplus.curd.entity.Poem;import org.apache.ibatis.annotations.Mapper;/** * 诗词表(Poem)表数据库访问层 * * @author jerryjin * @since 2021-02-16 17:20:50 */@Mapperpublic interface PoemMapper extends BaseMapper
{
}

5. 创建Service(可选)

package com.mybatisplus.curd.service;import com.baomidou.mybatisplus.extension.service.IService;import com.mybatisplus.curd.entity.Poem;/** * @author jerryjin */public interface PoemService extends IService
{
}
package com.mybatisplus.curd.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.mybatisplus.curd.entity.Poem;import com.mybatisplus.curd.mapper.PoemMapper;import com.mybatisplus.curd.service.PoemService;import org.springframework.stereotype.Service;/** * @author jerryjin */@Servicepublic class PoemServiceImpl extends ServiceImpl
implements PoemService {
}

6. 创建测试类

package com.mybatisplus.curd;import com.mybatisplus.curd.entity.Poem;import com.mybatisplus.curd.mapper.PoemMapper;import com.mybatisplus.curd.service.PoemService;import org.junit.Assert;import org.junit.jupiter.api.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;import javax.annotation.Resource;import java.util.List;/** * 测试通用Mapper、Service */@RunWith(SpringRunner.class)@SpringBootTestclass MybatisplusDemoApplicationTests {
@Resource private PoemMapper poemMapper; @Resource private PoemService poemService; /** * 通用 mapper */ @Test void contextLoads(){
System.out.println(("----- poemMapper.selectList 方法 test ------")); List
userList = poemMapper.selectList(null); Assert.assertEquals(19, userList.size()); System.out.println(("----- 输出完整列表: ------")); userList.forEach(System.out::println); } /** * 通用 Service */ @Test void contextLoads2(){
System.out.println(("----- poemService.list 方法 test ------")); List
userList = poemService.list(); Assert.assertEquals(19, userList.size()); System.out.println(("----- 输出完整列表: ------")); userList.forEach(System.out::println); }}

本项目源码

参考资料

转载地址:https://jerryjin.blog.csdn.net/article/details/113826806 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Vue 学习笔记 - 若依前后端分离项目发布到子目录
下一篇:数据库 SQL测试数据 - 笑虾原创诗词表

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年05月04日 23时11分16秒