开启掘金成长之旅!这是我参与「掘金日新计划 · 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);
}
}