MybatisPlus中的ActiveRecord
2020.02.10 12:34
2020.02.10 12:34
1. ActiveRecord
在Mybatis-Plus中提供了ActiveRecord的模式,支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可实现基本 CRUD 操作,简单来说就是一个实体类继承Model类,并通过注解与数据库的表名进行关联,这样就可以通过实体类直接进行表的简单增删改查操作,这样也确实极大的方便了开发人员。
原理理解:
简单来说Mybatis-plus是基于Mybatis的基础之上进行开发的,其基本操作还是一个Mapper操作中对应一条sql语句,通过参数和返回值来处理sql语句的执行结果。那样我们可以理解Mybatis-Plus的ActiveRecord其实就是Mybatis-Plus给我们提供一些简单的增删改查操作SQl语句的自动生成操作。
ActiveRecord 一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言, 对于 ActiveRecord 往往只能感叹其优雅,所以 MyBatisPlus也在 AR 道路上进行了一定的探索 。
1.1. 初次见面
1、实体类继承Model
public class User extends Model<User> {
@TableId(type = IdType.AUTO)
private Integer id;
private String user_name;
@TableField(select = false) // 查询是不显示该字段的值
private String password;
@TableField("email") // 指定数据库中实际的字段名
private String mail;
private Integer age;
@TableField(exist = false) // 在数据库中不存在
private String address;
}
2、测试用例
@Test
public void testSelectById() {
User user = new User();
user.setId(4);
User user1 = user.selectById(); // 在这个位置直接执行selectById
System.out.println("user1 = " + user1);
}
JDBC Connection [com.mysql.jdbc.JDBC4Connection@4bbf38b8] will not be managed by Spring
==> Preparing: SELECT id,user_name,email AS mail,age FROM user WHERE id=?
==> Parameters: 4(Integer)
<== Columns: id, user_name, mail, age
<== Row: 4, 赵六, zhaoliu@misiai.com, 28
<== Total: 1
那是不是可以删除UserMapper接口了呢?
不可以,因为底层还是使用到了接口。
1.2. 测试新增
@Test
public void testInsert() {
User u = new User();
u.setUser_name("无道");
u.setPassword("wrjklej");
u.setMail("991418182@qq.com");
boolean insert = u.insert();
System.out.println("insert = " + insert);
}
1.3. 更新操作
@Test
public void testUpdate() {
User u = new User();
u.setId(4);
u.setUser_name("无道22");
u.setAge(31);
boolean b = u.updateById();
System.out.println("b = " + b);
}
JDBC Connection [com.mysql.jdbc.JDBC4Connection@34aa8b61] will not be managed by Spring
==> Preparing: UPDATE user SET user_name=?, age=? WHERE id=?
==> Parameters: 无道22(String), 31(Integer), 4(Integer)
<== Updates: 1
1.4. 删除操作
@Test
public void testDelete() {
User u = new User();
u.setId(4);
boolean b = u.deleteById();
System.out.println("b = " + b);
}
1.5. 根据条件查询
@Test
public void testSelectCondition() {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.ge("age", 30);
User u = new User();
List<User> users = u.selectList(wrapper);
System.out.println("users = " + users);
}
本节阅读完毕!
(分享)