一、ActiveRecord簡單介紹
Active Record(簡稱AR),是一種領域模型模式,特點是一個模型類對應關系型數據庫中的一個表,而模型類的一個實例對應表中的一行記錄。而MP也對AR有一定支持。
在MP中開啟AR,僅需要實體類繼承Model類並實現主鍵指定方法
@TableName("tbl_employee")
public class Employee extends Model<Employee>{
private Integer id;
private String lastName;
private String email;
private Integer gender;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getGender() {
return gender;
}
public void setGender(Integer gender) {
this.gender = gender;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + ", age="
+ age + "]";
}
/**
* 指定實體的主鍵屬性
*/
@Override
protected Serializable pkVal() {
// TODO Auto-generated method stub
return id;
}
}
繼承Model類后,可以看出Employee實體繼承的方法,從而支持一系列的CRUD操作

二、以下是ActiveRecord的使用例子
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations= {"classpath:applicationContext.xml"}) public class TestActiveRecord { @Autowired private EmployeeMapper employeeMapper; /** * AR插入操作 */ @Test public void testARInsert() { Employee employee = new Employee(); employee.setLastName("Mary"); employee.setEmail("mary@121.com"); employee.setGender(0); employee.setAge(30); boolean res = employee.insert(); System.out.println(res); } /** * AR修改操作 */ @Test public void testARUpdate() { Employee employee = new Employee(); employee.setId(15); employee.setLastName("MaryNew"); employee.setEmail("maryNew@121.com"); employee.setGender(0); boolean res = employee.updateById(); System.out.println(res); } /** * AR查詢操作 */ @Test public void testARSelect() { Employee employee = new Employee(); employee.setId(15); Employee emp = employee.selectById(); System.out.println(emp); } /** * AR查詢所有操作 */ @Test public void testARSelectAll() { Employee employee = new Employee(); List<Employee> emps = employee.selectAll(); System.out.println(emps); } /** * AR條件查詢操作 */ @Test public void testARSelectListWrapper() { Employee employee = new Employee(); List<Employee> emps = employee.selectList(new EntityWrapper<Employee>() .eq("gender", 0) .like("last_name", "a") ); System.out.println(emps); } /** * AR條件查詢數量操作 */ @Test public void testARSelectCountWrapper() { Employee employee = new Employee(); Integer count = employee.selectCount(new EntityWrapper<Employee>() .eq("gender", 0) .like("last_name", "a") ); System.out.println(count); } /** * AR刪除操作 */ @Test public void testARDelete() { Employee employee = new Employee(); employee.setId(9); boolean b = employee.deleteById(); System.out.println(b); } /** * AR根據條件刪除操作 */ @Test public void testARDeleteWrapper() { Employee employee = new Employee(); boolean b = employee.delete(new EntityWrapper<>() .eq("gender", 1) .like("last_name", "r")); System.out.println(b); } /** * AR根據條件分頁操作 */ @Test public void testARSelectPage() { Employee employee = new Employee(); Page<Employee> page = employee.selectPage(new Page<Employee>(1, 2), new EntityWrapper<Employee>() .eq("gender", 0)); List<Employee> records = page.getRecords(); System.out.println("records: " + records); } }
