您的位置:

Mybatis-Plus Apply完全指南

一、简介

Mybatis-Plus Apply是一个基于Mybatis-Plus封装的可插拔SQL构建器,旨在简化CRUD操作的编写和查看。Apply采用Fluent API写法,可以帮助开发者快速构建复杂SQL,并且可以自动防止SQL注入攻击。

二、核心概念

在了解Mybatis-Plus Apply之前,需要先了解一些核心概念:

1. Wrapper

Wrapper是Apply的核心概念之一,表示SQL语句的条件构造器。Wrapper包含了多个方法用于构造SQL查询条件,如eq、in、between等。开发者可以结合Wrapper实现复杂的SQL查询条件拼接,从而可读性更强。

2. LambdaQueryWrapper

此类继承Wrapper,通过Lambda表达式封装SQL条件构造器。LambdaQueryWrapper提供了lambda表达式操作符,可以更加方便地对Java对象进行条件查询。同时,LambdaQueryWrapper还支持自动排除null值属性和空字符串属性。

3. LambdaUpdateWrapper

类似于LambdaQueryWrapper,LambdaUpdateWrapper继承了Wrapper,是用于Update语句的条件构造器。LambdaUpdateWrapper提供了更加方便的Update条件拼接方法,如set和inc等。

4. QueryChainWrapper

QueryChainWrapper是Mybatis-Plus提供的通用查询链式调用方法。QueryChainWrapper的操作符可以直接调用LambdaQueryWrapper中的操作符,议论实现链式调用至关重要。

三、使用方式

1. 添加依赖

在 pom.xml 文件中添加如下依赖即可:

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-extension</artifactId>
  <version>latest-version</version>
</dependency>

2. 实现查询操作

以下是LambdaQueryWrapper的一个简单示例:

QueryWrapper<User> queryWrapper = new LambdaQueryWrapper<User>()
  .eq(User::getUsername, "admin")
  .eq(User::getPassword, "123456")
  .ge(User::getCreateTime, "2021-01-01")
  .orderByAsc(User::getCreateTime);

List<User> userList = userService.list(queryWrapper);

上述代码将从数据库中查询所有用户名为admin,密码为123456,创建时间大于等于2021-01-01的用户,并按创建时间升序排序。其中,LambdaQueryWrapper通过Lambda表达式封装SQL构造器。eq方法表示使用等于的条件,ge方法表示大于等于的条件,orderByAsc方法表示升序排序。

3. 实现更新操作

以下是LambdaUpdateWrapper的一个简单示例:

LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>()
  .eq(User::getUsername, "admin")
  .set(User::getPassword, "1234567");

userService.update(updateWrapper);

上述代码将更新用户名为admin的用户的密码为1234567。其中,LambdaUpdateWrapper继承自Wrapper,使用eq方法确定更新的目标,使用set方法来进行更新操作。

4. 实现通用查询操作

以下是QueryChainWrapper的一个简单示例:

List<User> userList = userService.lambdaQuery()
  .eq(User::getUsername, "admin")
  .eq(User::getPassword, "123456")
  .ge(User::getCreateTime, "2021-01-01")
  .orderByAsc(User::getCreateTime)
  .list();

上述代码使用了QueryChainWrapper的通用查询功能,将链式调用中的操作符应用到了LambdaQueryWrapper中。通过链式调用,可以非常方便地构造出复杂的SQL查询条件。同时,QueryChainWrapper还支持直接返回单个实体或者分页查询。

四、总结

Mybatis-Plus Apply提供了基于Wrapper的SQL构造器和基于Lambda表达式的SQL条件构造器,以及通用查询链式调用功能。使用Apply能够更加方便地构造出复杂的SQL查询和更新条件,并且自动防止SQL注入攻击。希望本篇文章对大家对Mybatis-Plus Apply的学习有所帮助。