Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。 ActiveRecord 一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言, 对于 ActiveRecord 往往只能感叹其优雅,所以 MP 也在 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;
}
}
以下都是在依赖引入正确的前提下进行的,在SpringBoot的测试类中进行测试,如果想看依赖文件请查看我mybatis-plus专栏的其他文章。
mybatis-plus依赖版本:3.4.3.1
@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);
}
@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);
}
Employee employee=new Employee();
Employee result = employee.selectById(14);
System.out.println(result);
Employee employee=new Employee();
/* Employee result = employee.selectById(14);
System.out.println(result);*/
employee.setId(14);
Employee result = employee.selectById();
System.out.println(result);
List<Employee> employeeList = employee.selectAll();
employeeList.forEach(System.out::println);
查出所有姓名中带老师的员工
List<Employee> employeeList = employee.selectList(new QueryWrapper<Employee>()
.like("last_name", "老师")
);
employeeList.forEach(System.out::println);
查询女员工的总数
Integer result = employee.selectCount(new QueryWrapper<Employee>()
.eq("gender", 0)
);
System.out.println("result="+result);
查询出名字中带"老"的所有员工,并分页,每页两条记录,显示第一页。
@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);
}
删除之前
Employee employee=new Employee();
boolean result = employee.deleteById(5);
System.out.println(result);
Employee employee=new Employee();
employee.setId(6);
boolean result = employee.deleteById();
System.out.println(result);
Employee employee=new Employee();
boolean result = employee.delete(new QueryWrapper<Employee>()
.like("last_name", "苍")
);
System.out.println(result);