一、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); } }