SpringBoot - 学习笔记《集成 MyBatis-Plus》
发布日期:2021-06-30 14:53:50
浏览次数:2
分类:技术文章
本文共 5005 字,大约阅读时间需要 16 分钟。
SpringBoot - 学习笔记《集成 MyBatis-Plus》
简介
简称MP
,之前做过Spring集成MyBatis-Plus看底部参考资料。
- 提供默认的通用增删改查功能。
- 支持便捷的生成自定义代码。
1. 代码生成
这方面,还有很大的优化空间。毕竟现在Mybatis插件这么多,优秀的代码生成GUI工具也不少。
- 编码方式:今天调通了下次一用又出翔。毕竟不是一直追他的版本,升个级感觉我们又是陌生人了。之前写过 本次就不赘述了。
- GUI界面:官方出了idea插件 但是很敷衍(copy from free mybatis plugin),文档就几张GIF,也没有详细的说明。不过留了个QQ群 829161197。毕竟是MP一套的东西,就说一说吧。勉强用来生成通用Mapper所需要的 Entity 和 Mapper 够了。(实用价值不大)
如果你之前已经安装过free mybatis plugin
就会看到两个。大写开头那个才是MybatisX
总结
还不如直接用 人家还提供了 MP 的模板。要不你们考虑下合作多好。
EasyCode
+ MP通用CURD
目前是比较可行的。可悲在于,EasyCode的自定义模板很自由,MP随时有被踢掉的风险。比如有哪个热心的粉丝出一套 MP模板。。。 EasyCode 的用户就可以完全放弃 MP 了。 话说回来,有心做精品,好好合作,也是有搞头的。并非一定是谁吃了谁。 2. 通用Mapper、Service
对于通用的数据库操作,MyBatis-Plus提供了通用Mapper。我们使用MP时只要做两步:
- 创建实体
- 创建对应
Mapper
并继承BaseMapper<T>
这样通用的CURD就到手了。
关于带条件的操作慎用
,因为用到了MP自己定义的。自己玩的小项目,还行。如果用于团队项目,容易被背锅。当然如果你是项目负责人能hold住也没问题。下面是简单介绍,详情看官方文档。本文底部有链接。
通用Mapper 支持
除常规CURD外,还封装了一些扩展方法:
- 根据 entity 条件,删除记录
- 根据ID 批量删除
- 根据 whereEntity 条件,更新记录
- 根据ID 批量查询
- 根据条件,查询记录有几个版本。
通用Service 支持
除常规CURD外,还封装了一些扩展方法:
- 批量插入
- 自动判断保存or更新、自动判断保存or更新(批量)
- 按条件删除
- 批量删除
- 按条件更新
- 根据ID批量更新
- 查询:单条、列表
- 分页查询
- 统计总数
- 按条件统计总数
- 链式查询
- 链式更改
集成演示
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 ServiceImplimplements 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 ------")); ListuserList = 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年05月04日 23时11分16秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
select下拉框分组展示插件的使用--(select-mania插件的使用)
2019-04-30
Java Lambda表达式的应用--Stream API操作集合框架
2019-04-30
Myslq连接(JDBC)url属性的参数的设置
2019-04-30
关于Spring MVC与前端的交互
2019-04-30
大厂经典面试题:Redis为什么这么快?
2019-04-30
Android之Retrofit基本用法篇
2019-04-30
Netty与网络协议资料整理
2019-04-30
golang实现大数据量文件的排序
2019-04-30
golang中的time包
2019-04-30
2019NOIP D4题 加工领奖
2019-04-30
2021.5.19 JS高级第二天
2019-04-30
啊沙发沙发
2019-04-30
SpringBoot内置Tomcat配置参数
2019-04-30
局部加权回归
2019-04-30
Mysql 入门
2019-04-30
ubuntu 快捷键
2019-04-30
linux 根目录下文件夹分析
2019-04-30
linux 查看分区和文件大小
2019-04-30
Not using PCAP_FRAMES 解释(snort中)
2019-04-30