MybatisPlus-Lambda表达式操作Wrapper以及ActiveRecord(活动记录)

116 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 5 天,点击查看活动详情

某些场景下使用 lambda 表达式真的能减少 java 中一些冗长的代码,增加代码的优雅性。这时候就有必要掌握简单的写法

 /**
* lambda表达式测试MP
**/
@Test
public void lambdaMP(){
    LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
    lambdaQueryWrapper.eq(User::getAge,10);
    List<User> userList = userMapper.selectList(lambdaQueryWrapper);
    for (User user : userList) {
        System.out.println(user);
    }
}

15 ActiveRecord(活动记录)

Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。

ActiveRecord(简称AR)一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言,对于ActiveRecord 往往只能感叹其优雅,所以我们也在 AR 道路上进行了一定的探索,喜欢大家能够喜欢。

什么是ActiveRecord?

ActiveRecord也属于ORM(对象关系映射)层,由Rails最早提出,遵循标准的ORM模型:表映射到记录,记录映射到对象,字段映射到对象属性。配合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而且简洁易懂。

ActiveRecord的主要思想是:

1 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录;通常表的每个字段在类中都有相应的Field

2 ActiveRecord同时负责把自己持久化,在ActiveRecord中封装了对数据库的访问,即CURD

3 ActiveRecord是一种领域模型(Domain Model),封装了部分业务逻辑

开启AR之旅

在MP中,开启AR非常简单,只需要将实体对象继承Model即可。

public class User  extends Model<User>

根据主键ID查询

 // 测试AR查询操作 通过ID查询数据 @Test  public void selectByID(){  User  user  =  new  User (); user.setId( 1 L);  // 调用AR的查询方法查询数据  User user1 = user.selectById(); System. out .println(user1); } 

为什么可以直接通过user对象直接使用API去操作呢?因为我们实体继承了Model,可以直接用Model里面的方法去直接操作

新增操作

 // 测试AR新增操作
@Test
public void testInsert(){
    User user = new User();
    user.setName( "德莱厄斯" );
    user.setEmail( "lol@qq.com" );
    user.setAge(99);
    user.setUserName( "诺克萨斯之手" );
    user.setPassword( "123456" );
    // 调用AR的插入方法插入数据
 boolean  result= user.insert();
    System.out.println( "是否成功:" +result);
}

更新操作

 // 测试AR修改操作
@Test
public void testUpdate(){
    User user = new User();
    // 查询条件
user.setId(10L);
    // 更新的数据
user.setName( "德莱厄斯-update" );
    // 调用AR的修改方法修改数据
 boolean  result= user.updateById();
    System.out.println( "是否成功:" +result);
}

删除操作

 // 测试AR删除操作
@Test
public void testDelete(){
    User user = new User();
    // 删除条件
user.setId(10L);
    // 调用AR的删除方法删除数据
 boolean insert = user.deleteById();
    System.out.println( "是否成功:" +insert);
}

根据条件查询

 // 测试AR查询 根据条件查询
@Test
public void testSelectByInfo(){
    User user = new User();
    // 查询条件
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    // SELECT id,user_name,password,name,age,email FROM tb_user WHERE user_name LIKE  '%剑%'  AND age >  20
queryWrapper.like( "user_name" , "剑" ).gt( "age" ,20);
    // 调用AR的查询方法查询数据
List<User> userList = user.selectList(queryWrapper);
    for (User user1 : userList) {
        System.out.println(user1);
    }

}