0%

【MybatisPlus】ActiveRecord使用

ActiveRecord是MybatisPlus的一个语法糖,使得CRUD使用更加方便


1 ActiveRecord

1.1 介绍

  • Active Record,是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录
  • ActiveRecord一直广受动态语言(PHP、Ruby)的喜爱,而Java作为准静态语言,对于ActiveRecord往往只能感叹器优雅,所有MP也在AR道路上进行了一定的探索

1.2 开启AR

  • 步骤很简单,只需要JavaBean继承com.baomidou.mybatisplus.extension.activerecord.Model即可
1
2
3
4
5
6
7
8
@Data
public class User extends Model<User> {
@TableId(type = IdType.AUTO)
private Integer id;
private String name;
private Integer age;
private String email;
}

1.3 操作演示

  • 由于JavaBean继承与Model,而Model里面有对数据库操作的基本方法,所以对数据库操作时用JavaBean自己来实现
1
2
3
4
5
6
7
8
9
10
11
//插入
@Test
public void insertTest() {
User user = new User();
user.setName("asaki");
user.setAge(18);
user.setEmail("asaki@email.com");

//自己进行插入操作
user.insert(); //SQL:INSERT INTO user ( name, age, email ) VALUES ( ?, ?, ? )
}
1
2
3
4
5
6
7
8
9
10
11
//更新
@Test
public void updateTest() {
User user = new User();
user.setName("ASAKI");
user.setAge(22);
user.setEmail("asaki@qq.com");

//自己进行修改操作
user.update(new UpdateWrapper<User>().eq("id", 12));
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//查询
@Test
public void selectTest() {
User user = new User();

//通过主键查询
User user1 = user.selectById(1); //SQL:SELECT id,name,age,email FROM user WHERE id=?
System.out.println(user1);

//查询全部
List<User> users = user.selectAll(); //SQL:SELECT id,name,age,email FROM user
users.forEach(System.out::println);

//条件构造器查询
List<User> users2 = user.selectList(new QueryWrapper<User>().eq("age", 18)); //SQL:SELECT id,name,age,email FROM user WHERE (age = ?)
users2.forEach(System.out::println);
}
1
2
3
4
5
6
7
8
9
10
11
//删除
@Test
public void deleteTest() {
User user = new User();

//通过主键id删除
user.deleteById(12); // SQL:DELETE FROM user WHERE id=?

//通过条件构造器删除
user.delete(new QueryWrapper<User>().eq("id", 12)); //SQL:DELETE FROM user WHERE (id = ?)
}

1.4 总结

  • AR模式提供了一种更加便捷的方式实现CRUD操作,其本质还是调用的Mybatis对应的方法,类似于语法糖
  • 到此,我们简单领略了Mybatis-Plus的美丽与高效率,值得注意的一点是:我们提供了强大的代码生成器,可以快速生成各类代码,真正做到了即开即用