序号

类型

地址

1

MySQL

MySQL操作之概念、SQL约束(一)

2

MySQL

MySQL操作之数据定义语言(DDL)(二)

3

MySQL

MySQL操作之数据操作语言(DML)(三)

4

MySQL

MySQL操作之数据查询语言:(DQL)(四-1)(单表操作)

5

MySQL

MySQL操作之数据查询语言:(DQL)(四-2)(多表查询)

6

MySQL

MySQL操作之数据控制语言:(DC)(五)

7

MySQL

MySQL操作之数据库函数

8

MySQL

MySQL管理之数据类型

9

MySQL

MySQL管理之索引

10

MySQL

MySQL管理之事务管理

11

MySQL

MySQL管理之存储过程

12

MySQL

MySQL管理之视图

13

MySQL

MySQL管理之数据备份与还原

14

MySQL

Linux(centos 7.5)服务器安装MySQL

15

MyBatis

MyBatis从入门到多表关联

16

MyBatis

MyBatis常用方法

17

MyBatis

Mybatis逆向工程的使用(附文件地址)

18

MyBatis

spring boot连接Mybatis数据库的配置文件(MySql、SQLserver、Oracle)

19

MyBatis-Plus

Mybatis-Plus使用案例(包括初始化以及常用插件)

20

MyBatis-Plus

Mybatis-Plus(Service CRUD 接口)

21

MyBatis-Plus

Mybatis-plus 4种条件构造器方式

22

MyBatis-Plus

Mybatis-Plus 执行自定义SQL

23

MyBatis-Plus

MyBatis-plus配置自定义SQL(执行用户传入SQL)

24

MyBatis-Plus

Mybatis-Plus(连接Hive)

25

MyBatis-Plus

Mybatis-Plus 代码生成器



文章目录

  • 1、简介
  • 2、 Save
  • 3、 SaveOrUpdate
  • 4、 Remove
  • 5、 Update
  • 6、 Get
  • 7、 List
  • 8、 Page
  • 9、 Count
  • 10、 Chain
  • 10.1 查询
  • 10.2 更新



1、简介

说明:

  • 通用 Service CRUD 封装IService接口,进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆,
  • 泛型 T 为任意实体对象
  • 建议如果存在自定义通用 Service 方法的可能,请创建自己的 IBaseService 继承 Mybatis-Plus 提供的基类
  • 对象 Wrapper 为 条件构造器

官网地址:

https://baomidou.com/pages/49cc81/#service-crud-%E6%8E%A5%E5%8F%A3

2、 Save

// 插入一条记录(选择字段,策略插入)
boolean save(T entity);
// 插入(批量)
boolean saveBatch(Collection<T> entityList);
// 插入(批量)
boolean saveBatch(Collection<T> entityList, int batchSize);

参数说明

类型

参数名

描述

T

entity

实体对象

Collection

entityList

实体对象集合

int

batchSize

插入批次数量

案例:

MyUser user01 = MyUser.builder().name("张三").age(12).address("北京").build();
MyUser user02 = MyUser.builder().name("李四").age(26).address("上海").build();
ArrayList<MyUser> myUsers = new ArrayList<>();
myUsers.add(user01);
myUsers.add(user02);
//  插入一条记录(选择字段,策略插入)
boolean save = myUserService.save(user01);
// 插入(批量)
boolean b = myUserService.saveBatch(myUsers);
// 插入(批量)(batchSize)插入批次数量
boolean c = myUserService.saveBatch(myUsers, 1);

3、 SaveOrUpdate

// TableId 注解存在更新记录,否插入一条记录
boolean saveOrUpdate(T entity);
// 根据updateWrapper尝试更新,否继续执行saveOrUpdate(T)方法
boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper);
// 批量修改插入
boolean saveOrUpdateBatch(Collection<T> entityList);
// 批量修改插入
boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);

参数说明

类型

参数名

描述

T

entity

实体对象

Wrapper

updateWrapper

实体对象封装操作类 UpdateWrapper

Collection

entityList

实体对象集合

int

batchSize

插入批次数量

案例:

MyUser user01 = MyUser.builder().name("张三").age(12).address("北京").build();
MyUser user02 = MyUser.builder().name("李四").age(26).address("上海").build();
ArrayList<MyUser> myUsers = new ArrayList<>();
myUsers.add(user01);
myUsers.add(user02);

// TableId 注解存在更新记录,否插入一条记录
boolean a = myUserService.saveOrUpdate(user01);
boolean b = myUserService.saveOrUpdateBatch(myUsers);
boolean c = myUserService.saveOrUpdateBatch(myUsers, 1);

4、 Remove

// 根据 entity 条件,删除记录
boolean remove(Wrapper<T> queryWrapper);
// 根据 ID 删除
boolean removeById(Serializable id);
// 根据 columnMap 条件,删除记录
boolean removeByMap(Map<String, Object> columnMap);
// 删除(根据ID 批量删除)
boolean removeByIds(Collection<? extends Serializable> idList);

参数说明

类型

参数名

描述

Wrapper

queryWrapper

实体包装类 QueryWrapper

Serializable

id

主键 ID

Map<String, Object>

columnMap

表字段 map 对象

Collection<? extends Serializable>

idList

主键 ID 列表

案例:

MyUser user01 = MyUser.builder().name("张三").age(12).address("北京").build();
MyUser user02 = MyUser.builder().name("李四").age(26).address("上海").build();
ArrayList<MyUser> myUsers = new ArrayList<>();
myUsers.add(user01);
myUsers.add(user02);

LambdaQueryWrapper<MyUser> eq = new QueryWrapper<MyUser>().lambda().eq(MyUser::getAge, 1);
boolean remove = myUserService.remove(eq);
boolean b = myUserService.removeById(1);
HashMap<String, Object> removeMap = new HashMap<>();
removeMap.put("age", 1);

boolean b1 = myUserService.removeByMap(removeMap);
ArrayList<Integer> ids = new ArrayList<>();
ids.add(1);
ids.add(2);
boolean b2 = myUserService.removeByIds(ids);

5、 Update

// 根据 UpdateWrapper 条件,更新记录 需要设置sqlset
boolean update(Wrapper<T> updateWrapper);
// 根据 whereWrapper 条件,更新记录
boolean update(T updateEntity, Wrapper<T> whereWrapper);
// 根据 ID 选择修改
boolean updateById(T entity);
// 根据ID 批量更新
boolean updateBatchById(Collection<T> entityList);
// 根据ID 批量更新
boolean updateBatchById(Collection<T> entityList, int batchSize);

参数说明

类型

参数名

描述

Wrapper

updateWrapper

实体对象封装操作类 UpdateWrapper

T

entity

实体对象

Collection

entityList

实体对象集合

int

batchSize

更新批次数量

案例:

LambdaUpdateWrapper<MyUser> eq = new UpdateWrapper<MyUser>().lambda().eq(MyUser::getAge, 1);
MyUser myUser = MyUser.builder().id(18L).name("李四").age(12).build();
// 根据 UpdateWrapper 条件,更新记录 需要设置sqlset
boolean update = myUserService.update(eq);
boolean update1 = myUserService.update(myUser, eq);

MyUser myUser01 = MyUser.builder().id(18L).name("李四").age(12).build();
MyUser myUser02 = MyUser.builder().id(18L).name("李四").age(12).build();
ArrayList<MyUser> myUsers = new ArrayList<>();
myUsers.add(myUser01);
myUsers.add(myUser02);
// 根据 ID 选择修改
boolean b = myUserService.updateById(myUser01);
// 根据ID 批量更新
boolean b1 = myUserService.updateBatchById(myUsers);
boolean b2 = myUserService.updateBatchById(myUsers,1);

6、 Get

// 根据 ID 查询
T getById(Serializable id);
// 根据 Wrapper,查询一条记录。结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("LIMIT 1")
T getOne(Wrapper<T> queryWrapper);
// 根据 Wrapper,查询一条记录
T getOne(Wrapper<T> queryWrapper, boolean throwEx);
// 根据 Wrapper,查询一条记录
Map<String, Object> getMap(Wrapper<T> queryWrapper);
// 根据 Wrapper,查询一条记录
<V> V getObj(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);

参数说明

类型

参数名

描述

Serializable

id

主键 ID

Wrapper

queryWrapper

实体对象封装操作类 QueryWrapper

boolean

throwEx

有多个 result 是否抛出异常

T

entity

实体对象

Function<? super Object, V>

mapper

转换函数

案例:

MyUser byId = myUserService.getById(1);
LambdaQueryWrapper<MyUser> eq = new QueryWrapper<MyUser>().lambda().eq(MyUser::getAge, 1);
MyUser one = myUserService.getOne(eq);
MyUser one1 = myUserService.getOne(eq, false);

Map<String, Object> map = myUserService.getMap(eq);
String obj1 = myUserService.getObj(eq, Object::toString);

7、 List

// 查询所有
List<T> list();
// 查询列表
List<T> list(Wrapper<T> queryWrapper);
// 查询(根据ID 批量查询)
Collection<T> listByIds(Collection<? extends Serializable> idList);

// 查询(根据 columnMap 条件)
Collection<T> listByMap(Map<String, Object> columnMap);
// 查询所有列表
List<Map<String, Object>> listMaps();
// 查询列表
List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper);

// 查询全部记录
List<Object> listObjs();
// 查询全部记录
<V> List<V> listObjs(Function<? super Object, V> mapper);
// 根据 Wrapper 条件,查询全部记录
List<Object> listObjs(Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询全部记录
<V> List<V> listObjs(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);

参数说明

类型

参数名

描述

Wrapper

queryWrapper

实体对象封装操作类 QueryWrapper

Collection<? extends Serializable>

idList

主键 ID 列表

Map<String, Object>

columnMap

表字段 map 对象

Function<? super Object, V>

mapper

转换函数

案例:

LambdaQueryWrapper<MyUser> eq = new QueryWrapper<MyUser>().lambda().eq(MyUser::getAge, 1);
ArrayList<Integer> ids = new ArrayList<>();
ids.add(1);
List<MyUser> list = myUserService.list();
List<MyUser> list1 = myUserService.list(eq);
Collection<MyUser> myUsers = myUserService.listByIds(ids);

HashMap<String, Object> eqMap = new HashMap<>();
eqMap.put("age", 1);
Collection<MyUser> myUsers1 = myUserService.listByMap(eqMap);
List<Map<String, Object>> maps = myUserService.listMaps();
List<Map<String, Object>> maps1 = myUserService.listMaps(eq);

List<Object> objects = myUserService.listObjs();
List<Object> objects1 = myUserService.listObjs(eq);
List<String> strings1 = myUserService.listObjs(Objects::toString);
List<String> strings = myUserService.listObjs(eq, Object::toString);

8、 Page

// 无条件分页查询
IPage<T> page(IPage<T> page);
// 条件分页查询
IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper);
// 无条件分页查询
IPage<Map<String, Object>> pageMaps(IPage<T> page);
// 条件分页查询
IPage<Map<String, Object>> pageMaps(IPage<T> page, Wrapper<T> queryWrapper);

参数说明

类型

参数名

描述

IPage

page

翻页对象

Wrapper

queryWrapper

实体对象封装操作类 QueryWrapper

案例:

Page<MyUser> page = new Page<>(1, 2);
LambdaQueryWrapper<MyUser> eq = new QueryWrapper<MyUser>().lambda().eq(MyUser::getAge, 1);
// 无条件分页查询
IPage<MyUser> userIPagepage = myUserService.page(page);
// 条件分页查询
IPage<MyUser> page1 = myUserService.page(page, eq);
// 无条件分页查询
IPage<Map<String, Object>> mapIPage = myUserService.pageMaps(page);
// 条件分页查询
IPage<Map<String, Object>> mapIPage1 = myUserService.pageMaps(page, eq);

9、 Count

// 查询总记录数
int count();
// 根据 Wrapper 条件,查询总记录数
int count(Wrapper<T> queryWrapper);

参数说明

类型

参数名

描述

Wrapper

queryWrapper

实体对象封装操作类 QueryWrapper

案例:

int count = myUserService.count();
LambdaQueryWrapper<MyUser> eq = new LambdaQueryWrapper<MyUser>().eq(MyUser::getAge, 1);
int count1 = myUserService.count(eq);

10、 Chain

10.1 查询

// 链式查询 普通
QueryChainWrapper<T> query();
// 链式查询 lambda 式。注意:不支持 Kotlin
LambdaQueryChainWrapper<T> lambdaQuery();

// 示例:
query().eq("column", value).one();
lambdaQuery().eq(Entity::getId, value).list();

案例(在server中):

MyUser age = query().eq("age", 1).one();
List<MyUser> list = lambdaQuery().eq(MyUser::getAge, 1).list();

10.2 更新

// 链式更改 普通
UpdateChainWrapper<T> update();
// 链式更改 lambda 式。注意:不支持 Kotlin
LambdaUpdateChainWrapper<T> lambdaUpdate();

// 示例:
update().eq("column", value).remove();
lambdaUpdate().eq(Entity::getId, value).update(entity);

案例:

update().eq("age", 1).remove();

MyUser myUser = new MyUser();
boolean update2 = lambdaUpdate().eq(MyUser::getAge, 12).update(myUser);