Blage's Coding Blage's Coding
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
  • MySQL

  • ORM框架

    • Mybatis
    • Mybatis_Plus
      • 1.MyBatis-Plus的Service服务常用API
      • 2.LambdaUpdateWrapper和LambdaQueryWrapper
      • 3.mybatis-plus分页拦截器
      • 4.逻辑删除
      • 5.更新查询语句
  • 数据库
  • ORM框架
phan
2023-05-15
目录

Mybatis_Plus

# Mybatis_Plus

# 1.MyBatis-Plus的Service服务常用API

  • list():返回List<T>对象,相当于select * from

  • save(T object):insert添加插入一条T对象的记录

  • remove(queryWrapper):根据搜索条件删除该记录

  • removeByIds(List<Long>):删除id列表上所有id对应的记录

  • updateById(T object):根据object对象中的id字段匹配表记录,然后更新对象中的其他属性(如果object某个属性字段为空则不进行更新)

  • update(object,updateWrapper):根据updateWrapper搜索条件(相当于where)匹配记录,然后把object对象的属性更新到该条记录

  • getById(Long id):根据id查找表中的数据,返回一个实体对象

  • getOne(queryWrapper):根据搜索条件查询表,返回一个对象

  • count(queryWrapper):根据搜索条件查询表,返回记录的条数

# 2.LambdaUpdateWrapper和LambdaQueryWrapper

  • LambdaUpdateWrapper

updateWrapper.eq相当于拼接where条件,第一个变量可以是boolean,第二个指明是类的哪个属性作为字段,第三个指明值。

updateWrapper.set相当于仅仅设置哪个字段,不更新全部。

整个sql语句拼接起来是update table set A=0 where 条件

LambdaUpdateWrapper<AddressBook> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(AddressBook::getUserId, BaseContext.getId());
updateWrapper.set(AddressBook::getIsDefault, 0);
1
2
3
  • LambdaQueryWrapper

queryWrapper.orderByDesc表示根据哪个字段进行降序,一般可以根据更新时间

queryWrapper.orderByDesc模糊查询

使用queryWrapper1.in条件删除多个数据

queryWrapper1.in(SetmealDish::getSetmealId, ids);   //ids是一个集合数组
setmealDishService.remove(queryWrapper1);
1
2

# 3.mybatis-plus分页拦截器

首先配置分页插件,交给Bean管理

@Configuration
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;
    }
}
1
2
3
4
5
6
7
8
9

然后构建分页构造器->查询构造器->调用Service的page()方法

其中分页构造器需要指明page和pageSize

page()方法中会把查询结果注入到分页构造器的records(本质是一个查询结果列表List<T>),pageinfo就是要的最终的结果。

public R<Page> page(int page, int pageSize, String name) {
    Page<Employee> pageinfo = new Page<>(page, pageSize);
    LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.like(StringUtils.isNotEmpty(name), Employee::getName, name);
    queryWrapper.orderByDesc(Employee::getUpdateTime);
    //执行查询
    employeeService.page(pageinfo, queryWrapper);
    return R.success(pageinfo);
}
1
2
3
4
5
6
7
8
9

# 4.逻辑删除

实际后端调用deleteById时,数据库后端并不删除该行记录,仅仅使用表中的show_status位来表示是否删除

  • 配置yml中MP的逻辑删除字段值,1则不删除,0则删除。
mybatis-plus:
  global-config:
    db-config:
      logic-delete-value: 0
      logic-not-delete-value: 1
1
2
3
4
5
  • 在实体类上添加@TableLogic标注逻辑删除字段

# 5.更新查询语句

在Service实现类中可以直接使用以下框架封装好的api操作数据库。

更新语句使用setsql()

boolean id1 = update().setSql("liked=liked+1").eq("id", id).update();
1

查询语句实现

List<Blog> list = query().in("id", ids).last("ORDER BY FIELD(id," + idstr + ")").list();
1
编辑 (opens new window)
#Mybatis
上次更新: 2023/12/15, 15:49:57
Mybatis

← Mybatis

Theme by Vdoing | Copyright © 2023-2024 blageCoder
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式