Java基础、中级、高级、架构面试资料

MyBatis-Plus 通用 IService 使用介绍与简单使用教程

JAVA herman 2206浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

MyBatis-Plus 通用 IService 使用介绍与简单使用教程。

一、引言

MP 除了通用的 Mapper 还是通用的 Servcie 层,这也减少了相对应的代码工作量,把通用的接口提取到公共。其实按照 MP 的这种思想,可以自己也实现一些通用的 Controller。

今天是放假时间,作为一名码农来说,这里小编提醒大家有空还是多出去运动一下。

生命在于运动,生命诚可贵。

MyBatisPlus愿景

二、IService 使用

service 层需要继承 IService,当然实现层也要继承对应的实现类。

MyBatisPlus中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 上的时间,空闲出来,学习更多新的知识,看更多的书。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » MyBatis-Plus 通用 IService 使用介绍与简单使用教程