Mybatis-Plus的ActiveRecord
ActiveRecord
一、简介
Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。
ActiveRecord 一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言,
对于 ActiveRecord 往往只能感叹其优雅,所以 MP 也在 AR 道路上进行了一定的探索
二、如何使用AR模式
仅仅需要让实体类继承Model类且实现主键指定方法即可。
例如:
package com.baomidou.mybatisplus.bean;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import java.io.Serializable;
/**
* @TableName
* value:指定当前实体类所对应的表名
*/
@Data
@TableName(value = "tbl_employee")
public class Employee extends Model<Employee> {
/**
* @TableId:
* value:指定表中的主键列的列名,如果实体属性名和列名一致,可以省略不指定
* type:指定主键策略
*/
@TableId(value = "id",type = IdType.AUTO)
private Integer id; //int
@TableField(value = "last_name")
private String lastName;
@TableField(value = "email")
private String email;
@TableField(value = "gender")
private Integer gender;
@TableField(value = "age")
private Integer age;
/**
* 指定当前实体类的主键属性
* @return
*/
@Override
public Serializable pkVal() {
return id;
}
}
三、CRUD测试
以下都是在依赖引入正确的前提下进行的,在SpringBoot的测试类中进行测试,如果想看依赖文件请查看我mybatis-plus专栏的其他文章。
mybatis-plus依赖版本:3.4.3.1
3.1 AR 插入操作
@Test
public void testARInsert(){
Employee employee=new Employee();
employee.setLastName("王老师");
employee.setEmail("wls@guigu.com");
employee.setGender(0);
employee.setAge(22);
boolean result = employee.insert();
System.out.println("result="+result);
}
3.2 AR 修改操作
@Test
public void testARUpdate(){
Employee employee=new Employee();
employee.setId(14);
employee.setLastName("张老师");
employee.setEmail("zls@guigu.com");
employee.setGender(1);
employee.setAge(44);
boolean result = employee.updateById();
System.out.println("result="+result);
}
3.3 AR 查询操作
3.3.1 根据id查询
Employee employee=new Employee();
Employee result = employee.selectById(14);
System.out.println(result);
Employee employee=new Employee();
/* Employee result = employee.selectById(14);
System.out.println(result);*/
employee.setId(14);
Employee result = employee.selectById();
System.out.println(result);
3.3.2 查询所有
List<Employee> employeeList = employee.selectAll();
employeeList.forEach(System.out::println);
3.3.3 用条件构造器查询
查出所有姓名中带老师的员工
List<Employee> employeeList = employee.selectList(new QueryWrapper<Employee>()
.like("last_name", "老师")
);
employeeList.forEach(System.out::println);
查询女员工的总数
Integer result = employee.selectCount(new QueryWrapper<Employee>()
.eq("gender", 0)
);
System.out.println("result="+result);
3.4、AR 分页复杂操作
查询出名字中带"老"的所有员工,并分页,每页两条记录,显示第一页。
@Test
public void testARPage(){
Employee employee=new Employee();
Page<Employee> employeePage = employee.selectPage(new Page<Employee>(1, 2),
new QueryWrapper<Employee>()
.like("last_name", "老")
);
List<Employee> records = employeePage.getRecords();
records.forEach(System.out::println);
}
3.5、分页删除操作
删除之前
3.5.1 通过id删除
Employee employee=new Employee();
boolean result = employee.deleteById(5);
System.out.println(result);
Employee employee=new Employee();
employee.setId(6);
boolean result = employee.deleteById();
System.out.println(result);
3.5.2 使用条件构造器删除
Employee employee=new Employee();
boolean result = employee.delete(new QueryWrapper<Employee>()
.like("last_name", "苍")
);
System.out.println(result);
四、小结
- AR 模式提供了一种更加便捷的方式实现 CRUD 操作,其本质还是调用的 Mybatis 对应的方法,类似于语法糖
语法糖是指计算机语言中添加的某种语法,这种语法对原本语言的功能并没有影响.可以更方便开发者使用,可以避免出错的机会,让程序可读性更好. - 到此,我们简单领略了 Mybatis-Plus 的魅力与高效率,值得注意的一点是:我们提供了强大的代码生成器,可以快速生成各类代码,真正的做到了即开即用
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· 面试官:你是如何进行SQL调优的?
2020-06-22 localbridge.exe配置分析器错误