Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。
ActiveRecord 一直广受动态语言(PHP、Ruby等)的喜爱,而lava作为准静态语言,对于ActiveRecord 往往只能感叹其优雅,所以MP也在AR 道路上进行了一定的探索。
Maven:
<!-- mybatisPlus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>2.3</version>
</dependency>
开启AR模式的方法很简单,就是让我们的实体类继承Model类,并实现其抽象方法,指定主键即可,如下:
/**
* javaBean
*
* 定义JavaBean中的成员变量所使用的类型:都是包装类型
* 因为每个基本数据类型都有一个默认值
* int ==> 0
* boolean ==> false
*
* @author xiaofei
*/
@Data
@TableName(value = "tbl_employee")
public class Employee extends Model<Employee> {
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
@TableField
private String lastName;
private String email;
private Integer gender;
private Integer age;
/**
* 通过exit设置当前字段不存在数据库里面
*/
@TableField(exist = false)
private Double salary;
/**
* 指定当前实体类的 主键属性
* @return
*/
@Override
protected Serializable pkVal() {
return id;
}
}
测试:
/**
* 测试AR
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootMybatisplusARTests {
/**
* 添加
*/
@Test
public void insertAR() {
Employee employee = new Employee();
employee.setLastName("AR");
employee.setEmail("ar@xiaofei.com");
employee.setGender(1);
employee.setAge(22);
boolean insert = employee.insert();
System.err.println(insert);
System.err.println(employee.getId());
}
/**
* 修改
*/
@Test
public void updateAR() {
Employee employee = new Employee();
employee.setId(10);
employee.setGender(0);
employee.setAge(0);
boolean b = employee.updateById();
System.err.println(b);
}
/**
* 查询
*/
@Test
public void selectAR() {
// 根据Id查询
Employee employee = new Employee();
Employee employee1 = employee.selectById(1);
// System.err.println(employee1);
// 查询全部
List<Employee> employeesAll = employee.selectAll();
// System.err.println(employeesAll);
// 查询名字带有M的
List<Employee> employees = employee.selectList(new EntityWrapper().like("last_name", "M"));
// System.err.println(employees);
// 查询总数量
int count = employee.selectCount(null);
// System.err.println(count);
// 分页
Page<Employee> page = employee.selectPage(
new Page<Employee>(1, 2), null);
System.err.println(page);
/**
* Page:{ [Pagination { total=0 ,size=2 ,pages=0 ,current=1 }], records-size:2 }
*/
List<Employee> emps = page.getRecords();
System.err.println("数据:" + emps);
}
/**
* 删除
* <p>
* 注意:删除不存在的数据在逻辑上也是成功的;
*/
@Test
public void deleteAR() {
Employee employee = new Employee();
boolean b = employee.deleteById(10);
System.err.println(b);
}
}
注意点:
删除不存在的数据在逻辑上也是成功的;
AR总结:
1、AR 模式提供了一种更加便捷的方式实现CRUD操作,其本质还是调用的Mybatis对应的方法,类似于语法糖。
2、到此,我们简单领略了Mybatis-Plus的魅力与高效率,值得注意的一点是:我们提供了强大的代码生成器,可以快速生成各类代码,真正的做到了即开即用。