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

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

系列文章目录

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的知识点去进行就可以~

相关文章:

  • 解决 php post 而 gin 收不到问题
  • 【强化学习论文】离线元强化学习中基于对比学习的稳定表示
  • yum 相关命令
  • 第一期 | 整洁,从桌面开始
  • 信息和数据
  • 01 概率论的基本概念
  • 分布式锁的几种实现方式
  • MySQL高级语句(一)
  • Java切面中各个方法对象、参数对象、反射以及注解的分析
  • 图解curator如何实现zookeeper分布式锁
  • web入门-命令执行
  • 复盘-----自适应
  • Docker搭建私有镜像仓库及推送、拉取私服镜像
  • 端口转发工具Rinetd详细入门教程
  • 复盘-----CSS(cascading style sheets)1
  • [附源码]计算机毕业设计项目管理系统的专家评审模块Springboot程序
  • 用R语言和python进行社交网络中的社区检测
  • Android 10.0 Launcher3单层高斯模糊(毛玻璃)效果的实现
  • 自定义RBAC(1)
  • (Qt) 子组件绘制QPainter
  • Vue3商店后台管理系统设计文稿篇(六)
  • Jupyter使用详解
  • JavaEE day6 初识JavaScript
  • Python数据可视化(二)使用统计函数绘制简单图形
  • nodejs+vue高校网上报名系统
  • 阿里“云开发“小程序(uniCloud)