五,MyBatis-Plus 当中的 “ActiveRecord模式”和“SimpleQuery工具类”(详细实操)

news/2024/9/30 14:07:46

五,MyBatis-Plus 当中的 “ActiveRecord模式”和“SimpleQuery工具类”(详细实操)

@

目录
  • 五,MyBatis-Plus 当中的 “ActiveRecord模式”和“SimpleQuery工具类”(详细实操)
  • 1. ActiveRecord 模式
  • 2. ActiveRecord介绍
    • 2.1 ActiveRecord实现
  • 3. SimpleQuery 工具类
    • 3.1 SimpleQuery介绍
    • 3.2 list
    • 3.3 map
    • 3.4 Group
  • 4. 最后:


1. ActiveRecord 模式

2. ActiveRecord介绍

ActiveRecord(活动记录,简称AR),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。ActiveRecord,一直广受解释型动态语言(PHP,Ruby 等)的喜爱,通过围绕一个数据对象进行 CRUD 操作。而Java作为准静态(编译型语言),对于 ActiveRecord 往往只能感叹其优雅,所以 MP 也在 AR 道路上进行了一定的探索,仅仅需要让实体类继承 Model 类且实现主键指定方法,即可开启 AR 之旅。

2.1 ActiveRecord实现

接下来我们来看一下ActiveRecord的实现步骤

想要使用 ActiveRecord 模式,就需要让对应的实体类(Java Bean) extends(继承) Model 类。

在这里插入图片描述

我们可以看到,Model 类中提供了一些增删改查方法,这样的话我们就可以直接使用实体类对象调用这些增删改查方法了,简化了操作的语法,但是他的底层依然是需要 UserMapper 的,所以持久层接口不能省略。

测试 ActiveRecord 模式的增删改查。

添加数据

import com.rainbowsea.bean.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class ActiveRecordTest {//public class User extends Model<User>, 需要继承 extends Model<User>// 添加操作@Testvoid activeRecordAdd() {User user = new User();user.setName("zhang");user.setAge(28);user.setEmail("zhang@rainbowsea.com");user.insert();}
}

在这里插入图片描述

删除数据


import com.rainbowsea.bean.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class ActiveRecordTest {//public class User extends Model<User>, 需要继承 extends Model<User>// 删除操作@Testvoid activeRecordDelete() {User user = new User();user.setId("1837781440184680449");user.deleteById();}
}

在这里插入图片描述

修改数据

import com.rainbowsea.bean.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class ActiveRecordTest {//public class User extends Model<User>, 需要继承 extends Model<User>// 修改操作@Testvoid activeRecordUpdate() {User user = new User();user.setId("3");user.setAge(1);user.updateById();}
}

在这里插入图片描述

查询数据


import com.rainbowsea.bean.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class ActiveRecordTest {//public class User extends Model<User>, 需要继承 extends Model<User>// 查询操作@Testvoid activeRecordSelect() {User user = new User();user.setId("7");User result = user.selectById();System.out.println(result);}
}

在这里插入图片描述

3. SimpleQuery 工具类

3.1 SimpleQuery介绍

SimpleQuery 可以对 selectList 查询后的结果用 Stream 流进行了一些封装,使其可以返回一些指定结果,简洁了 api 的调用。

3.2 list

在这里插入图片描述


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.toolkit.SimpleQuery;
import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;@SpringBootTest
public class SimpleQueryTest {@Resourceprivate UserMapper userMapper;@Testvoid testList() {List<String> list = SimpleQuery.list(new LambdaQueryWrapper<User>().eq(User::getName, "Mary"), User::getId);System.out.println(list);}
}

在这里插入图片描述

对于封装后的字段进行 lambda 操作。

在这里插入图片描述

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.toolkit.SimpleQuery;
import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;@SpringBootTest
public class SimpleQueryTest {@Resourceprivate UserMapper userMapper;@Testvoid testList2() {List<String> list = SimpleQuery.list(new LambdaQueryWrapper<User>().eq(User::getName, "Mary"), User::getName,new Consumer<User>() {@Overridepublic void accept(User user) {Optional.of(user.getName()).map(String::toLowerCase).ifPresent(user::setName);}});System.out.println(list);}
}

在这里插入图片描述


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.toolkit.SimpleQuery;
import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;@SpringBootTest
public class SimpleQueryTest {@Resourceprivate UserMapper userMapper;// 使用lab表达式@Testvoid testList3() {List<String> list = SimpleQuery.list(new LambdaQueryWrapper<User>().eq(User::getName, "Mary"), User::getName,user -> Optional.of(user.getName()).map(String::toLowerCase).ifPresent(user::setName));System.out.println(list);}
}

3.3 map

将所有的对象以id,实体的方式封装为Map集合

在这里插入图片描述


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.toolkit.SimpleQuery;
import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;@SpringBootTest
public class SimpleQueryTest {@Resourceprivate UserMapper userMapper;@Testvoid testMap() {Map<String, User> map = SimpleQuery.keyMap(new LambdaQueryWrapper<User>(), User::getId);System.out.println(map);}
}

将单个对象以id,实体的方式封装为Map集合

在这里插入图片描述


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.toolkit.SimpleQuery;
import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;@SpringBootTest
public class SimpleQueryTest {@Resourceprivate UserMapper userMapper;@Testvoid testMap2() {Map<String, User> map = SimpleQuery.keyMap(new LambdaQueryWrapper<User>().eq(User::getId, 1L), User::getId);System.out.println(map);}
}

只想要 id 和 name 组成的 map

在这里插入图片描述

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.toolkit.SimpleQuery;
import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;@SpringBootTest
public class SimpleQueryTest {@Resourceprivate UserMapper userMapper;@Testvoid testMap3() {Map<String, String> map = SimpleQuery.map(new LambdaQueryWrapper<User>(), User::getId, User::getName);System.out.println(map);}}

3.4 Group

Group 就是简单的分组效果。

在这里插入图片描述

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.toolkit.SimpleQuery;
import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;@SpringBootTest
public class SimpleQueryTest {@Resourceprivate UserMapper userMapper;@Testvoid testGroup() {Map<String, List<User>> map = SimpleQuery.group(new LambdaQueryWrapper<User>(), User::getName);System.out.println(map);}}

4. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/66494.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

快速入门Java中的HTTP请求

1. 使用java.net.HttpURLConnection Java标准库中的HttpURLConnection是最基本的方式,用于发送HTTP请求。 示例:发送GET请求发送POST请求2. 使用Apache HttpClient Apache HttpClient是一个强大的HTTP客户端库,支持高级HTTP通信功能。 添加依赖 如果你使用Maven,添加以下依…

WLAN无线网卡驱动安装教程

火影官方驱动下载地址下载WLAN无线网卡驱动下载完成后点击全部解压缩解压完成后有一个安装说明,查看自己的网卡是什么品牌的,不知道就一个一个的全部都安装一遍 安装过程不用管显示什么,结束了就进行下一个就行全部运行安装过一遍后重启查看是否有WiFi开关

Springboot starter主动生效和被动生效

starter集成入应用有两种方式。我们从应用视角来看有两种:一种是主动生效,在starter组件集成入Spring Boot应用时需要你主动声明启用该starter才生效,即使你配置完全。这里会用到@Import注解,将该注解标记到你自定义的@Enable注解上:我们将该注解标记入Spring Boot应用就可…

DDos和CC攻击区别

DDos(分布式拒绝服务)攻击和CC(Challenge Collapsar)攻击的主要区别于目标和攻击方式: 1.攻击目标 •DDos攻击:旨在通过大量的恶意流量消耗服务器资源,导致目标服务器瘫痪或无法响应正常用户的请求。攻击来自分布式的多个来源(通常是被感染的设备或“肉鸡”),以使服务…

怎么查看网站是否被谷歌收录,教你查看网站被谷歌收录的详细方法

要查看网站是否被谷歌收录,可以采用以下几种详细方法: 一、使用Google Search Console(谷歌搜索控制台) 访问并登录: 访问Google Search Console的官方网站。 使用你的谷歌账户进行登录。 添加并验证网站: 在控制台中,添加你想要查询的网站。 按照提供的验证方法进行验证…

CCleaner v6.28.11297 系统优化和隐私保护工具,中文绿色便携版

下载地址:https://pan.quark.cn/s/ed5dde3543cf 软件介绍 CCleaner中文版是一款免费的系统优化和隐私保护工具的系统清理软件,它体积小,扫描速度非常快,支持自定义清理规则,增强了应用程序清理范围和效果.CCleaner最新版是Piriform(梨子公司)最著名广受好评的系统清理优化及隐…

v8 的内存相关

查看内存 按照《深入浅出nodejs》一书所说,64位机器可使用内存大概是1.5G. 可以通过 process.memoryUsage() 查看.Returns an object describing the memory usage of the Node.js process measured in bytes.图片解读 垃圾回收 v8 将内存分为2部分:一个是新生代区(生存周期短…

remote-ssh

远程工作(remote working)安装插件 remote-ssh 增加相应配置然后点击+号,依次按照提示添加配置,最后,如下所示(手动添加 IdentityFile "D:\key\local_test")修改秘钥文件权限,依次点击属性,安全,高级,禁用继承,然后删除所有其他的权限只留下自己的It should …