赞
踩
本文主要对mybatis-plus的AR模式、插件、逆向工程、自定义全局操作. 公共字段自动填充等知识点进行讲解。
Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。ActiveRecord 一直广受动态语言( PHP . Ruby 等)的喜爱,而 Java 作为准静态语言,对于 ActiveRecord 往往只能感叹其优雅,所以 MP 也在 AR 道路上进行了一定的探索,仅仅需要让实体类继承 Model 类且实现主键指定方法,即可开启 AR 之旅。接下来看具体代码:
1. entity
@Data
public class User extends Model<User> {
private Integer id;
private String name;
private Integer age;
private Integer gender;
//重写这个方法,return当前类的主键
@Override
protected Serializable pkVal() {
return id;
}
}
注: 实体类继承Model类,重写pkVal方法。
2. mapper
public interface UserDao extends BaseMapper<User> {
}
注: 虽然AR模式用不到该接口,但是一定要定义,否则使用AR时会报空指针异常。
3. 使用AR
(1). AR插入操作:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({ "classpathspring/spring-dao.xml"}) public class TestAR { @Test public void testArInsert(){ User user = new User(); user.setName("林青霞"); user.setAge(22); user.setGender(1); boolean result = user.insert(); System.out.println(result); } }
注: 我们并不需要注入mapper接口,不过正如刚才所说,不使用但还是要定义,否则会报错。AR操作是通过对象本身调用相关方法,比如要insert一个user,那就用这个user调用insert方法即可。返回值为布尔类型,由上图可看到返回了true,是操作成功的。
(2). AR更新操作:
@Test
public void testArUpdate(){
User user = new User();
user.setId(1);
user.setName("刘亦菲");
boolean result = user.updateById();
System.out.println(result);
}
注: user调用updateById方法,将id为1的用户进行更新。
(3). AR查询操作:
@Test public void testArSelect(){ User user = new User(); //1. 根据id查询 //user = user.selectById(1); //或者这样用 //user.setId(1); //user = user.selectById(); //2. 查询所有 //List<User> users = user.selectAll(); //3. 根据条件查询 //List<User> users = user.selectList(new EntityWrapper<User>().like("name","刘")); //4. 查询符合条件的总数 int result = user.selectCount(new EntityWrapper<User>().eq("gender",1)); System.out.println(result); }
注: 上面的代码涉及到了四个不同的查询操作,其实用法与MP的BaseMapper提供的方法的用法差不多,只不过这里是实体对象调用。
(4). AR删除操作:
@Test
public void testArDelete(){
User user = new User();
//删除数据库中不存在的数据也是返回true
//1. 根据id删除数据
//boolean result = user.deleteById(1);
//或者这样写
//user.setId(1);
//boolean result = user.deleteById();
//2. 根据条件删除
boolean result = user.delete(new EntityWrapper<User>().like("name","玲"));
System.out.println(result);
}
注: 这里介绍了两个删除方法,代码中已有注释说明。需要注意的是,删除数据库中不存在的数据,结果也是true。
(5). AR分页操作:
@Test
public void testArPage(){
User user = new User();
Page<User> page =
user.selectPage(new Page<>(1,4),
new EntityWrapper<User>().like("name","刘"));
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。