这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战
什么是Active Record?
Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的 一个表,而模型类的一个实例对应表中的一行记录。 ActiveRecord 一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言, 对于 ActiveRecord 往往只能感叹其优雅,所以 MP 也在 AR 道路上进行了一定的探索。
ActiveRecord 也属于 ORM 层,由 Rails 最早提出,遵循标准的 ORM 模型:表映射到记录,记录映射到对象,字段映射到对象属性。配合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而且简洁易懂。
ActiveRecord 的主要思想是:
- 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录;通常表的每个字段在类中都有相应的 Field ;
- ActiveRecord 同时负责把自己持久化,在 ActiveRecord 中封装了对数据库的访问,即 CURD; ;
- ActiveRecord 是一种领域模型 (Domain Model) ,封装了部分业务逻辑;
ActiveRecord 比较适用于:
- 业务逻辑比较简单,当你的类基本上和数据库中的表一一对应时 , ActiveRecord 是非常方便的,即你的业务逻辑大多数是对单表操作;
- 当发生跨表的操作时 , 往往会配合使用事务脚本 (Transaction Script) ,把跨表事务提升到事务脚本中;
- ActiveRecord 最大优点是简单 , 直观。 一个类就包括了数据访问和业务逻辑 . 如果配合代码生成器使用就更方便了;
插入操作
AR操作如果是第一次用的小伙伴会有十分奇怪的感觉,我们要将我们的实体类去继承Model抽象类,在这个抽象类当中有很多的方法去实现SQL操作,我们要去重写主键值
之后在我们的测试方法中直接使用就可以
@Test
public void demo1(){
Employee employee = new Employee();
employee.setName("测试1");
employee.setEmail("1@测试邮箱");
employee.setGender(1);
employee.setAge(35);
boolean result = employee.insert();
System.out.println(result);
}
修改操作
@Test
public void demo2(){
Employee employee = new Employee();
employee.setId(6);
employee.setName("修改1");
employee.setEmail("1@修改邮箱");
employee.setGender(1);
employee.setAge(35);
boolean result = employee.updateById();
System.out.println(result);
}
查找操作
根据主键查询
查询所有
这只是基本的查询操作,当然他也有根据条件查询的这种复杂的操作
@Test
public void demo5(){
Employee employee =new Employee();
List<Employee> employees = employee.selectList(
new EntityWrapper<Employee>()
.like("name","a")
);
System.out.println(employees);
//查询数量
int count = employee.selectCount(
new EntityWrapper<Employee>()
.eq("gender", 0)
);
System.out.println(count);
}
删除操作
其实使用方法是差不多的,没有必要全部列举出来,我们看一下有关删除的方法