前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Mybatis-Plus的ActiveRecord

Mybatis-Plus的ActiveRecord

作者头像
别团等shy哥发育
发布2023-02-25 16:08:23
发布2023-02-25 16:08:23
46000
代码可运行
举报
运行总次数:0
代码可运行

ActiveRecord

一、简介

        Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。         ActiveRecord 一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言, 对于 ActiveRecord 往往只能感叹其优雅,所以 MP 也在 AR 道路上进行了一定的探索

二、如何使用AR模式

仅仅需要让实体类继承Model类且实现主键指定方法即可。 例如:

代码语言:javascript
代码运行次数:0
复制
package com.baomidou.mybatisplus.bean;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;

import java.io.Serializable;

/**
 * @TableName
 *  value:指定当前实体类所对应的表名
 */
@Data
@TableName(value = "tbl_employee")
public class Employee extends Model<Employee> {
    /**
     * @TableId:
     *  value:指定表中的主键列的列名,如果实体属性名和列名一致,可以省略不指定
     *  type:指定主键策略
     */
    @TableId(value = "id",type = IdType.AUTO)
    private Integer id;         //int

    @TableField(value = "last_name")
    private String lastName;

    @TableField(value = "email")
    private String email;

    @TableField(value = "gender")
    private Integer gender;

    @TableField(value = "age")
    private Integer age;

    /**
     * 指定当前实体类的主键属性
     * @return
     */
    @Override
    public Serializable pkVal() {
        return id;
    }
}

三、CRUD测试

以下都是在依赖引入正确的前提下进行的,在SpringBoot的测试类中进行测试,如果想看依赖文件请查看我mybatis-plus专栏的其他文章。

代码语言:javascript
代码运行次数:0
复制
mybatis-plus依赖版本:3.4.3.1

3.1 AR 插入操作

代码语言:javascript
代码运行次数:0
复制
@Test
    public void testARInsert(){
        Employee employee=new Employee();
        employee.setLastName("王老师");
        employee.setEmail("wls@guigu.com");
        employee.setGender(0);
        employee.setAge(22);

        boolean result = employee.insert();
        System.out.println("result="+result);
    }

3.2 AR 修改操作

代码语言:javascript
代码运行次数:0
复制
  @Test
    public void testARUpdate(){
        Employee employee=new Employee();
        employee.setId(14);
        employee.setLastName("张老师");
        employee.setEmail("zls@guigu.com");
        employee.setGender(1);
        employee.setAge(44);

        boolean result = employee.updateById();
        System.out.println("result="+result);
    }

3.3 AR 查询操作

3.3.1 根据id查询

代码语言:javascript
代码运行次数:0
复制
 		Employee employee=new Employee();

        Employee result = employee.selectById(14);
        System.out.println(result);
代码语言:javascript
代码运行次数:0
复制
  Employee employee=new Employee();

      /*  Employee result = employee.selectById(14);
        System.out.println(result);*/
        employee.setId(14);
        Employee result = employee.selectById();
        System.out.println(result);

3.3.2 查询所有

代码语言:javascript
代码运行次数:0
复制
   List<Employee> employeeList = employee.selectAll();
   employeeList.forEach(System.out::println);

3.3.3 用条件构造器查询

查出所有姓名中带老师的员工

代码语言:javascript
代码运行次数:0
复制
 List<Employee> employeeList = employee.selectList(new QueryWrapper<Employee>()
                .like("last_name", "老师")
        );
    employeeList.forEach(System.out::println);

查询女员工的总数

代码语言:javascript
代码运行次数:0
复制
 Integer result = employee.selectCount(new QueryWrapper<Employee>()
                .eq("gender", 0)
        );
        System.out.println("result="+result);

3.4、AR 分页复杂操作

查询出名字中带"老"的所有员工,并分页,每页两条记录,显示第一页。

代码语言:javascript
代码运行次数:0
复制
@Test
    public void testARPage(){
        Employee employee=new Employee();
        Page<Employee> employeePage = employee.selectPage(new Page<Employee>(1, 2),
                new QueryWrapper<Employee>()
                        .like("last_name", "老")
        );
        List<Employee> records = employeePage.getRecords();
        records.forEach(System.out::println);
    }

3.5、分页删除操作

删除之前

3.5.1 通过id删除

代码语言:javascript
代码运行次数:0
复制
   Employee employee=new Employee();
    boolean result = employee.deleteById(5);
    System.out.println(result);
代码语言:javascript
代码运行次数:0
复制
       Employee employee=new Employee();
        employee.setId(6);
        boolean result = employee.deleteById();
        System.out.println(result);

3.5.2 使用条件构造器删除

代码语言:javascript
代码运行次数:0
复制
Employee employee=new Employee();
        boolean result = employee.delete(new QueryWrapper<Employee>()
                .like("last_name", "苍")
        );
        System.out.println(result);

四、小结

  • AR 模式提供了一种更加便捷的方式实现 CRUD 操作,其本质还是调用的 Mybatis 对应的方法,类似于语法糖 语法糖是指计算机语言中添加的某种语法,这种语法对原本语言的功能并没有影响.可以更方便开发者使用,可以避免出错的机会,让程序可读性更好.
  • 到此,我们简单领略了 Mybatis-Plus 的魅力与高效率,值得注意的一点是:我们提供了强大的代码生成器,可以快速生成各类代码,真正的做到了即开即用
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ActiveRecord
  • 一、简介
  • 二、如何使用AR模式
  • 三、CRUD测试
    • 3.1 AR 插入操作
    • 3.2 AR 修改操作
    • 3.3 AR 查询操作
      • 3.3.1 根据id查询
      • 3.3.2 查询所有
      • 3.3.3 用条件构造器查询
    • 3.4、AR 分页复杂操作
    • 3.5、分页删除操作
      • 3.5.1 通过id删除
      • 3.5.2 使用条件构造器删除
  • 四、小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档