MyBatis-Plus 通用 IService 使用介绍与简单使用教程。
一、引言
MP 除了通用的 Mapper 还是通用的 Servcie 层,这也减少了相对应的代码工作量,把通用的接口提取到公共。其实按照 MP 的这种思想,可以自己也实现一些通用的 Controller。
今天是放假时间,作为一名码农来说,这里小编提醒大家有空还是多出去运动一下。
生命在于运动,生命诚可贵。
二、IService 使用
service 层需要继承 IService,当然实现层也要继承对应的实现类。
/**
* 用户 服务类
*/
public interface UserService extends IService<User> {
}
/**
* 用户 服务实现类
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
基本的增删改查我就不一一演示了,演示几个特殊一点的方法。
getOne(),这个是方法返回结果不止一条则会抛出异常,如果想默认取第一条结果,可以给这方法传第二个参数为 false。
@Test
public void getOne() {
User one = userService.getOne(Wrappers.<User>lambdaQuery().eq(User::getAge, 31),false);
System.out.println(one);
}
saveOrUpdateBatch(),批量新增或者修改方法,判断 ID 是否存在,如果 ID 不存在执行新增,如果 ID 存在先执行查询语句,查询结果为空新增,否则修改。
@Test
public void saveOrUpdateBatch() {
User user1 = new User();
user1.setName("兔子");
user1.setAge(18);
User user2 = new User();
user2.setId(1088250446457389060L);
user2.setName("乌龟");
user2.setAge(18);
List<User> users = Arrays.asList(user1, user2);
boolean b = userService.saveOrUpdateBatch(users);
System.out.println(b);
}
接下来说一下基于 lambda 的相关操作。
/**
* lombda查询
*/
@Test
public void lambdaQuery(){
List<User> list = userService.lambdaQuery().eq(User::getAge, 18).list();
list.forEach(System.out::println);
}
/**
* lombda修改
*/
@Test
public void lambdaUpdate(){
boolean update = userService.lambdaUpdate().eq(User::getAge, 18).set(User::getAge, 31).update();
System.out.println(update);
}
/**
* lombda删除
*/
@Test
public void lambdaRemoce(){
boolean remove = userService.lambdaUpdate().eq(User::getAge, 18).remove();
System.out.println(remove);
}
框架封装的思考
这一章与 MyBatis-Plus 关系不大。但是我们通过 MyBatis-Plus 就可以窥探出学会抽象,学会设计模式,学会架构的好处。
我们多数程序员,一直在进行 CRUD 编程,每天一直在忙着写 CRUD 代码。从来都没想过如何去更好的封装 CRUD 中不变的部分,抽象可变的部分。让自己每天更轻松。
我这里只是抛砖引玉,让大家看到更多优秀的框架。优秀的代码实现,去借鉴它们,丰富自己的经验,在项目中花更少的时间,实现更重要的功能。而不应该花更多的时间在 CRUD 上。
让原本花在 CRUD 上的时间,空闲出来,学习更多新的知识,看更多的书。
: » MyBatis-Plus 通用 IService 使用介绍与简单使用教程
原创文章,作者:wdmbts,如若转载,请注明出处:https://blog.ytso.com/tech/java/251414.html