一、ActiveRecord(活动记录)
Active Record (活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。
ActiveRecord 一直广受动态语言(PHP、Ruby 等)的喜爱,而 Java 作为静态语言,对于 ActiveRecord 往往只能感叹其优雅,所以 MP 也在 AR 道路上进行了一定的探索。
二、如何使用 AR 模式
仅仅需要让实体类继承 Model 类且实现主键指定方法,即可开启 AR 之旅:
@TableName(value = "tbl_employee")
public class Employee extends Model<Employee> {
private Integer id;
@TableField(value = "last_name")
private String lastName;
private String email;
private Integer gender;
private Integer age;
@TableField(exist = false)
private Double salary;
/**
* 指定当前类的主键属性
* @return
*/
@Override
protected Serializable pkVal() {
return this.id;
}
}
三、AR 基本增删改查
1、插入操作
插入操作:
/**
* AR 插入操作
* SQL 语句
*/
@Test
public void testARInsert() {
Employee emp = new Employee();
emp.setLastName("宋老师");
emp.setAge(20);
emp.setGender(1);
emp.setEmail("sls@126.com");
boolean result = emp.insert();
System.out.println("result = " + result);
}
2、修改操作
根据 ID 进行修改操作:
/**
* AR 修改操作
*/
@Test
public void testARUpdateById(){
Employee employee = new Employee(16,"JKL","JKL@qq.com",0,15);
System.out.println(employee.updateById());
}
3、删除操作
根据ID删除操作:
/**
* 删除操作
*
* 注意:删除不存在的数据逻辑上也是成功的
*/
@Test
public void testARDelete(){
Employee employee = new Employee();
//通过id删除数据
boolean result = employee.deleteById(4);
System.out.println("通过ID删除结果=" + result);
//根据条件删除数据(在逻辑上删除不存在的数据也是返回True)
System.out.println("通过条件删除结果=" + employee.delete(new EntityWrapper<Employee>().eq("last_name","jack")));
}
4、查询操作
(1)根据ID查询
/**
* 根据ID查询
*/
@Test
public void testARSelectById() {
Employee emp = new Employee();
emp.setId(1);
Employee employee = emp.selectById();
System.out.println("employee = " + employee);
Employee emp2 = emp.selectById(1);
System.out.println("emp2 = " + emp2);
}
(2)查询所有数据
@Test
public void testARSelectAll(){
Employee employee = new Employee();
//查询所有操作
System.out.println(employee.selectAll());
//使用Wrapper以及AR进行模糊查询
employee.selectList(new EntityWrapper<Employee>().like("last_name","J")).forEach(value -> {
System.out.println(value);
});
}
(3)根据条件查询数据
/**
* 根据条件查询数据
*/
@Test
public void testARSelectList(){
Employee employee = new Employee();
List<Employee> emps = employee.selectList(new EntityWrapper<Employee>().like("last_name", "老师"));
emps.forEach(System.out::println);
}
(4)根据条件查询数量
/**
* 根据条件查询数据数量
*/
@Test
public void testARSelectCount(){
Employee employee = new Employee();
int count = employee.selectCount(new EntityWrapper<Employee>().like("gender", "0"));
System.out.println("count = " + count);
}
(5)分页复杂操作
/**
* AR 分页复杂操作
*/
@Test
public void testARSelectPage(){
Employee employee = new Employee();
//获取分页所有数据
Page<Employee> page = employee.selectPage(new Page<Employee>(1, 2), new EntityWrapper<Employee>().like("last_name", "老"));
//获取分页数据数
List<Employee> records = page.getRecords();
}
四、AR 小结
AR 模式提供了一种更加便捷的方式实现 CRUD 操作,其本质还是调用 MyBatis 对应的方法,类似于语法糖。
以 insert 方法为例:
其本质还是获取到 sqlSession 对象然后进行插入。
到底,简单领略了 MyBatis 的魅力与高效,值得注意的一点是,我们提供了强大的代码生成器,可以快速生成各类代码,真正的做到了即开即用。
分类:
MyBatisPlus
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
2019-09-26 事务
2019-09-26 多表查询(内连接与外连接)
2019-09-26 栈实现综合计算器(中缀表达式)
2019-09-26 数组模拟栈
2019-09-26 栈 Stack