当前位置: 首页 > news >正文

Mybatis-plus的基础用法

文章目录

      • 1. 核心功能
        • 1.1 配置与编写规则
        • 1.2 条件构造器
        • 1.3 自定义SQL
        • 1.4 IService接口
          • 1.4.1 Lambda方法
          • 1.4.2 批量新增
        • 1.5 分页查询
      • 2. 拓展功能
        • 2.1 代码生成器
        • 2.2 DB静态工具
        • 2.3 逻辑删除
        • 2.4 枚举处理器
      • 参考

1. 核心功能

1.1 配置与编写规则

Maven依赖:

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version>
</dependency>	

Mapper类:

public interface UserMapper extends BaseMapper<User> {
}

实体类命名规则:

在这里插入图片描述

YAML文件配置:

mybatis-plus:type-aliases-package: com.itheima.mp.domain.pomapper-locations: "classpath*:/mapper/**/*,xml"configuration:map-underscore-to-camel-case: truecache-enabled: falseglobal-config:db-config:id-type: assign_idupdate-strategy: not_null

MyBatis-Plus中比较常用的几个注解如下:

  • @TableName: 指定表名,使用场景:类名与数据库不符。

  • @TableId: 指定主键字段信息,使用场景:绑定主键。

  • @TableField: 指定普通字段信息,使用场景:字段名不符、变量名是布尔值、字段与数据库关键字冲突。

1.2 条件构造器

实现类里面会用到的:

个人理解:尽量用query。Lambda表达式(User::getId)类似这种,不写死代码。
在这里插入图片描述

1.3 自定义SQL

使用场景: update、select需要构建where前面的SQL语句。

int amount = 200;
QueryWrapper<User> wrapper = new QueryWrapper<User>().in(User::getId, ids);
userMapper.updateBalanceByIds(wrapper, amount);

第一个wrapper参数一定要加**@Param(“ew”),且名字为“ew”**。

void updateBalanceByIds(@Param("ew") Lambda......, @Param("xx") ....)
<update>update user SET balance = balance - #{amount} ${ew.customSqlSegment}
</update>
1.4 IService接口

实现原理图:
在这里插入图片描述

接口实现层:

public class UserServiceImpl extends IServiceImpl<UserMapper, User> implements IUserService {
}	

接口抽象层:

public interface IUserService extends IService<User> {
}
1.4.1 Lambda方法
return lambdaQuery().like(condition, User::getId, id).eq(xxx).list();
return lambdaQuery().set(xxx).eq(xxx).update();
1.4.2 批量新增

采取批量插入方式:
ps:打开SQL的配置,开启rewriteBatchedStatements=true参数。

public void saveBatch() {List<User> list = new ArrayList<>(1000);for (int i = 0; i < 100000; i++) {list.add(buildUser(i));if (i % 1000 == 0) {userService.saveBatch(list);list.clear();}}
}	
1.5 分页查询

先进行分页查询配置:

@Configuration
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor());return interceptor;}
}

然后利用Page<>分页操作:

public Result<Page<Article>> list(Integer pageNum, Integer pageSize, @RequestParam(required = false) String categoryId, @RequestParam(required = false) String state) {Page<Article> page = new Page<>(pageNum, pageSize);return Result.success(articleService.page(page));
}

2. 拓展功能

2.1 代码生成器

Java代码生成: 看文件夹代码。

MybatisX: 选中数据库表,右键选中。

MybatisPlus: 点击上方导航栏other,配置数据库,然后点击生成键,配置后生成。

2.2 DB静态工具

在这里插入图片描述

这样就不用注入AddressService了。

2.3 逻辑删除

理解:在数据库中加入delete字段(0,1),从逻辑上判断数据是否被删除。
在这里插入图片描述

2.4 枚举处理器

用途: 处理Java枚举类与数据库中字段类型不同的问题。
在这里插入图片描述

在这里插入图片描述

参考

黑马程序员视频

http://www.lryc.cn/news/457121.html

相关文章:

  • 【网络篇】计算机网络——应用层详述(笔记)
  • 力扣10.9
  • @RequestMapping指定请求方式的用法
  • 卷积神经网络细节问题及知识点
  • 【图论】(一)图论理论基础与岛屿问题
  • PhotoMaker部署文档
  • 双十一买什么最划算?2024年双十一选购攻略汇总!
  • Oracle架构之物理存储之审计文件
  • DAY6 面向对象
  • 代码随想录 (三)—— 哈希表部分刷题
  • 搜维尔科技:使用 SenseGlove Nova 2 远程操作机械手,实现了对鸡蛋的精细操控
  • Mybatis是什么?优缺点分别有哪些?
  • opencascade鼠标拖拽框选功能
  • docker 部署 postgres
  • 【重学 MySQL】五十、添加数据
  • 硬货!Zabbix监控AIX系统服务案例
  • python常见面试题
  • 低功耗接地故障控制器D4145
  • SpringMVC的处理流程
  • SpringBoot统一日志框架
  • vue-live2d看板娘集成方案设计使用教程
  • springboot接口如何支持400并发量
  • Verilog中的: `+:` 和 `-:`
  • 为何四次挥手要等待2MSL
  • C++——模拟实现list
  • React中useState、useReducer与useRef
  • ReGCL Rethinking Message Passingin Graph Contrastive Learning
  • ubutun安装ffmpeg
  • Vue的基本用法及模板语法
  • Redis数据库与GO完结篇:redis操作总结与GO使用redis