MyBatis-Plus之ActiveRecord[基础增删改查操作]

news2024/11/20 3:28:18

系列文章目录

Mybatis-Plus知识点[MyBatis+MyBatis-Plus的基础运用]_心态还需努力呀的博客-CSDN博客

Mybatis-Plus+SpringBoot结合运用_心态还需努力呀的博客-CSDN博客
MyBaits-Plus中@TableField和@TableId用法_心态还需努力呀的博客-CSDN博客

MyBatis-Plus中的更新操作(通过id更新和条件更新)_心态还需努力呀的博客-CSDN博客

MyBatis-Plus删除操作知识点总结_心态还需努力呀的博客-CSDN博客_mybatis-plus删除

注:上述所列只是部分文章,本系列还在更新中~感兴趣可看专栏哦~


文章目录

目录

系列文章目录

文章目录

前言

一、什么是ActiveRecord?

二、ActiveRecord的主要思想

三、开启AR之旅

3.1 在User持久化类下使User类继承Model。

 3.2 编写测试类TestMPSpringBootAR

 3.3 查看效果图

四、ActiveRecord新增数据

 五、ActiveRecord更新数据

 六、ActiveRecord删除数据

 七、ActiveRecord根据条件查询数据

总结


前言

ActiveRecord(简称AR)一直广受动态语言( PHP 、Ruby等)的喜爱,而java作为准静态语言,对于ActiveRecord往往只能感叹其优雅,所以我们也在AR道路上进行了一定的探索,希望大家能够喜欢~


一、什么是ActiveRecord?

ActiveRecord也属于ORM(对象关系映射)层,由Rails最早提出,遵循标准的ORM模型;表映射到记录,记录映射到对象,字段映射到对象属性。符合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而且简洁易懂。

二、ActiveRecord的主要思想

1.每个数据库表对应创建一个类,类的每个对象实例对应于数据库中表的一行记录;通常表的每个字段在类中都有相应的Fleld;

2.ActiveRecord同时负责把自己持久化,在ActiveRecord中封装了对数据库的访问,即CURD操作;

3.ActiveRecord是一种领域模型(Domain Model),封装了部分业务逻辑;

三、开启AR之旅

3.1 在User持久化类下使User类继承Model<T>。

T就是要传入的User持久化类。具体实现代码如下图所示:

 3.2 编写测试类TestMPSpringBootAR

在该类下编写TestARSelectById方法。通过id查询该用户信息。

注:可看到这里没有注入UserMapper也能查询到。这里主要是上述的继承Model,Model底层代码中会调用到你的UserMapper接口去实现。所以这里NEW 一个User对象,设置id值为7(表示要查询id为7的用户信息),然后user.就有调用的方法selectById。直接使用该方法,然后将结果打印到控制台即可。

package cn.imust.mp;

import cn.imust.mp.pojo.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestMPSpringBootAR {
    //通过id查询
    @Test
    public void TestARSelectByid(){
        User user=new User();
        user.setUserId(7);
        User user1 = user.selectById();
        System.out.println(user1);
    }
}

 3.3 查看效果图

可看到生成的sql代码user_id=?,通过id查询打印出的结果如下图所示:

四、ActiveRecord新增数据

只要上述的User持久化类继承Model后,我们实现方法就只需要直接写测试方法调用底层的方法即可。

这里我们新增一条名字为心态还需努力~,邮箱为3088222@qq.com,角色为管理员的用户信息。

编写testARInsert测试方法,在方法内设置值后直接调用insert方法(Model继承来的方法)。

//新增数据
    @Test
    public void testARInsert(){
        User user=new User();
        user.setUserName("心态还需努力~");
        user.setUserEmail("3088222@qq.com");
        user.setUserRole("ADMIN");
        boolean result = user.insert();
        if(result){
            System.out.println("新增成功~");
        }else{
            System.out.println("新增失败~");
        }
    }

效果图如下,通过生成的sql也可看出底层调用的还是MP的内容,最后执行添加成功~:

 五、ActiveRecord更新数据

更新数据有两种,一个是更具条件更新数据,一个是通过id更新数据。如下图所示:

 这里我们就以通过id更新数据为例,因为通过id更新数据是我们比较常见到的,管理员前台点击要修改的商品返回到后台传过来的就是id。

编写测试方法testARUpdate(),修改id为7的用户姓名,修改为心态。代码如下图所示:

//修改数据
    @Test
    public void testARUpdate(){
        User user=new User();
        user.setUserId(7);
        user.setUserName("心态");
        boolean result = user.updateById();
        if(result){
            System.out.println("修改成功~");
        }else{
            System.out.println("修改失败~");
        }
    }

执行效果图如下,可看到修改成功~:

 六、ActiveRecord删除数据

从下图可看到AR提供了三个删除的方法,第一个是id提前通过user.set设置好的。第二个是没提前设置id,直接传入也可以实现。第三个是条件删除。

 以第一个为例,我们删除id为7的用户信息。代码如下图所示:

//删除数据
    @Test
    public void testARDelete(){
        User user=new User();
        user.setUserId(7);
        boolean result = user.deleteById();
        if(result){
            System.out.println("删除成功~");
        }else{
            System.out.println("删除失败~");
        }
    }

执行效果图,删除成功~:

 七、ActiveRecord根据条件查询数据

select也提供了很多的方法,我们在MP中已经都以说过这些方法并且测试过他们的用法。

我们以第三个条件查询数据为例,查询所有用户状态为0的用户信息。编写代码如下:

//根据条件查询数据
    @Test
    public void testARSelect(){
        User user=new User();
        QueryWrapper<User> wrapper=new QueryWrapper<>();
        //查询用户状态为0的所有用户信息
        wrapper.eq("user_status",0);
        List<User> users = user.selectList(wrapper);
        for (User user1 : users) {
            System.out.println(user1);
        }
    }

执行结果如下图,通过生成的sql代码和打印出的结果即可看出测试成功~:

 

总结

AR简单的增删改查操作的使用就已经演示完了,这里的话重点在于了解用法,对于底层的代码如何实现的现在我们还不需要掌握,等以后真正运用到该知识点的话,运用熟练了再去看底层的代码逻辑会理解的更加的透彻一些~现在来说会运用就可以了,因为毕竟ActiveRecord很少运用在java上面。更多的还是直接运用MP的知识点去进行就可以~

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

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

相关文章

应用层之HTTP和HTTPS协议(必备知识)

文章目录1、什么是HTTP协议2、HTTP协议格式<1>HTTP请求方法<2>HTTP的状态码3、HTTP是不保存状态的协议<1>使用Cookie的状态管理3、HTTPS<1>加密方式<2>理解HTTPS加密过程1、什么是HTTP协议 HTTP协议常被称为超文本传输协议&#xff0c;HTTP协议…

国产蓝牙耳机什么牌子好?2022蓝牙耳机品牌排行

随着蓝牙耳机市场的快速发展&#xff0c;国产蓝牙耳机品牌也越来越多。那么在众多的国产蓝牙耳机当中&#xff0c;什么牌子的比较好呢&#xff1f;下面&#xff0c;一起来看看2022蓝牙耳机品牌排行吧。 一、南卡小音舱蓝牙耳机 售价&#xff1a;299 蓝牙&#xff1a;5.3 发…

ADSP-21489的开发详解:VDSP+自己编程写代码开发(4-按键控制 LED 灯)

以上全部都 OK 之后&#xff0c;我们就可以开始跑程序了。&#xff08;抱歉上面几项写的很罗嗦&#xff0c;都是我这近 15 年来开发 ADI DSP 实际项目里碰到问题的经验之谈&#xff0c;希望能够对用户有帮助&#xff09; 跑程序就涉及到了 Visual DSP软件的操作&#xff0c;我…

高校教材征订系统(Java+Web+MySQL)

目 录 ABSTRACT 2 1 概述 5 1.1开发背景 5 1.2 项目提出的意义 5 1.3 系统的开发方法 5 1.4 系统开发工具 6 1.4.1 JSP简介 6 1.4.2 JDK配置 7 1.4.3 数据库简介 8 1&#xff0e;4&#xff0e;4 tomcat配置 9 2 需求分析 11 2.1可行性分析 11 2.2 系统设计的要求 11 2.3 系统功…

01、RabbitMQ入门

目录 1.、什么是MQ 2、应用场景 3、主流MQ框架 4、Docker安装部署RabbitMQ 5、RabbitMQ管理平台 6、MQ的核心概念 单一生产者和单一消费者 7、springboot整合rabbitmq 执行测试方法testRabbitmq&#xff0c;控制台输出&#xff1a;receive msg : test rabbitmq messag…

[附源码]计算机毕业设计时间管理软件appSpringboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Vector-常用CAN工具 - CANoe入门到精通_01

之前有写过相关的CANoe工程配置&#xff0c;不过没有进行系统的介绍&#xff0c;通过各位热心人士的反馈&#xff0c;有些内容无法看懂&#xff0c;因此后续的内容会做好排版&#xff0c;让大家从入门到精通&#xff0c;一次性掌握所有的相关内容。今天就主要来介绍下VN1640/VN…

读vue源码搞懂响应式原理

vue2响应式原理 Vue2是借助Object.defineProperty()实现的&#xff0c;而Vue3是借助Proxy实现的想深入学习 Vue2 的响应式原理, 需要先学习 Object.defineProperty() 方法为了称呼方便, 后续说 Vue 响应式原理统一指 Vue2 的响应式原理 1.Object.defineProperty 方法 - 简介 定…

go实战(1)-hello,world与包基础(1)-模块基础

目录程序结构程序代码使用和建立包建立目录模块参考中的身份验证计算哈希值go.sum文件Checksum database程序结构 声明一个main包(包是对函数进行分组的一种方法&#xff0c;它由同一目录中的所有文件组成)。 导入流行的fmt包&#xff0c;它包含格式化文本的函数&#xff0c;…

WIFI码挪车码创建生成CPS聚合流量主小程序开发

WIFI码挪车码创建生成CPS聚合流量主小程序开发 系统特点// 这不是一套普通的给别人开SAAS账号的CPS推广返利系统&#xff0c;而是一套服务商版的CPS推广返利系统&#xff01;所谓服务商版&#xff0c;就是所有CPS推广走你的渠道接口&#xff0c;除了可以给你的下级客户开账号外…

MySQL下载安装运行

方式1、MySQL 官方网站&#xff1a;http://www.mysql.com 拉到最下面&#xff1a; 方式2、Windows版 MySQL 的官方下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 配置环境变量&#xff1a;在Path中添加至“\bin”&#xff08;系统盘C盘&#xff09;形式 使用管…

【OpenCV 例程 300篇】249. 特征描述之视网膜算法(FREAK)

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程 300篇】249. 特征检测之视网膜算法&#xff08;FREAK&#xff09; 1. FREAK 算法简介 快速视网膜算法&#xff08;FREAK&#xff09;算法是 Alexandre Alahi 在 ICCV 2012 的论文 FREAK: Fast Retina Keyp…

1.32 Cubemx_STM32F429串口中断+空闲中断

1、简介 有时候串口接收数据时,没有帧头与帧尾,单纯使用单字节中断接收数据,不太好断帧。如果单纯使用空闲中断接收数据,当帧内数据不连续或者黏包,使用空闲中断接收就会出现接收的数据小于或者大于帧长度,比较难断帧。解决办法 方法1、单字节中断接收+空闲中断 发送命…

Spring Cache组件

《Spring Cache组件》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《Spring Cache组件》《Spring Cache组件》1. Spring Cache组件概述2. ConcurrentHashMap缓存管理3. Cacheable详解4. Caffeine缓存管理5. 缓存更新策略6. 缓存清除策略7. 多级缓存策略…

[附源码]计算机毕业设计基于Springboot景区直通车服务系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

探究商城中的在线语音谈判功能开发

近年来&#xff0c;电子商务已经成为一种新型的商业形式&#xff0c;电子商务的发展让传统的面对面谈判发展为以互联网为依托的在线沟通&#xff0c;相较于传统的谈判方式&#xff0c;在线语音谈判方式更便捷、更高效&#xff0c;逐渐成为商务谈判的主流&#xff0c;因此该功能…

FastReport Mono 2023.1 Crack

与位于 FastReport 云服务器上的报表进行交互。特征 现在支持与 FastReport Cloud 报告生成器的部分集成。改进的报告验证器包括一个带有错误编号的新的可自定义列。添加了来自 JasperReports 的模板转换器。改进的“MSChartObject”&#xff1a; 常用设置已移至单独的编辑器。…

线程池详细介绍

线程池执行流程 线程池的状态 RUNNINGSHUTDOWNSTOPTIDYINGTERMINATED 线程池优雅关闭 线程池有两个关闭方法&#xff0c;shutdown()和shutdownNow()&#xff0c;shutdown()切换到SHUTDOWN状态&#xff0c;shutdownNow()切换到STOP状态&#xff0c;当队列和线程池都为空的时候…

学习 | ANSYS经典界面在压力容器分析设计中的应用

导读&#xff1a;分析设计作为压力容器设计的重要方法&#xff0c;不仅解决了压力容器常规设计所不能解决的问题&#xff0c;而且也是压力容器设计观点与方法上的一个质的飞跃。 分析设计通常分为两类&#xff1a;应力分类法&#xff08;弹性方法&#xff09;和直接法&#xf…

基于FPGA的SD NAND图片显示实现

文章目录 0、前言 1、目标 2、图片的预处理 3、SD NAND的预处理 4、FPGA实现 4.1、详细设计 4.2、仿真 4.3、实验结果 0、前言 在上一篇文章《基于FPGA的SD卡的数据读写实现&#xff08;SD NAND FLASH&#xff09;》中&#xff0c;我们了解到了SD NAND Flash的相关知识…