0
点赞
收藏
分享

微信扫一扫

Mybatis-Plus的ActiveRecord


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 使用条件构造器删除​​
  • ​​四、小结​​

一、简介

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

二、如何使用AR模式

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

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专栏的其他文章。

mybatis-plus依赖版本:3.4.3.1

Mybatis-Plus的ActiveRecord_mybatis-plus

3.1 AR 插入操作

@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);
}

Mybatis-Plus的ActiveRecord_mybatis-plus_02


Mybatis-Plus的ActiveRecord_System_03

3.2 AR 修改操作

@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);
}

Mybatis-Plus的ActiveRecord_mybatis_04


Mybatis-Plus的ActiveRecord_System_05

3.3 AR 查询操作

3.3.1 根据id查询

Employee employee=new Employee();

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

Mybatis-Plus的ActiveRecord_System_06

Employee employee=new Employee();

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

Mybatis-Plus的ActiveRecord_数据库_07

3.3.2 查询所有

List<Employee> employeeList = employee.selectAll();
employeeList.forEach(System.out::println);

Mybatis-Plus的ActiveRecord_mybatis-plus_08


Mybatis-Plus的ActiveRecord_mybatis_09

3.3.3 用条件构造器查询

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

List<Employee> employeeList = employee.selectList(new QueryWrapper<Employee>()
.like("last_name", "老师")
);
employeeList.forEach(System.out::println);

Mybatis-Plus的ActiveRecord_System_10


查询女员工的总数

Integer result = employee.selectCount(new QueryWrapper<Employee>()
.eq("gender", 0)
);
System.out.println("result="+result);

Mybatis-Plus的ActiveRecord_mybatis_11

3.4、AR 分页复杂操作

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

@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);
}

Mybatis-Plus的ActiveRecord_mybatis_12


Mybatis-Plus的ActiveRecord_spring boot_13

3.5、分页删除操作

删除之前

Mybatis-Plus的ActiveRecord_System_14

3.5.1 通过id删除

Employee employee=new Employee();
boolean result = employee.deleteById(5);
System.out.println(result);

Mybatis-Plus的ActiveRecord_spring boot_15


Mybatis-Plus的ActiveRecord_spring boot_16

Employee employee=new Employee();
employee.setId(6);
boolean result = employee.deleteById();
System.out.println(result);

Mybatis-Plus的ActiveRecord_spring boot_17


Mybatis-Plus的ActiveRecord_数据库_18

3.5.2 使用条件构造器删除

Employee employee=new Employee();
boolean result = employee.delete(new QueryWrapper<Employee>()
.like("last_name", "苍")
);
System.out.println(result);

Mybatis-Plus的ActiveRecord_数据库_19


Mybatis-Plus的ActiveRecord_spring boot_20

四、小结

  • AR 模式提供了一种更加便捷的方式实现 CRUD 操作,其本质还是调用的 Mybatis 对应的方法,类似于语法糖
    语法糖是指计算机语言中添加的某种语法,这种语法对原本语言的功能并没有影响.可以更方便开发者使用,可以避免出错的机会,让程序可读性更好.
  • 到此,我们简单领略了 Mybatis-Plus 的魅力与高效率,值得注意的一点是:我们提供了强大的代码生成器,可以快速生成各类代码,真正的做到了即开即用


举报

相关推荐

0 条评论