欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

Mybatis-Plus接口BaseMapper与Services使用详解

时间:2023-03-14 14:14:17|栏目:JAVA代码|点击:

最近在工作开发中遇到一个批量新增修改的处理,我使用的是 mybatis-plus,但是在用的 BaseMapper 接口里是没有这个方法的,后来发现 Service 接口里有这个方法,今天整理一下这2种用法。

一、使用 BaseMapper 接口

MyBatis Plus 提供了通用的 Mapper 接口(即 BaseMapper 接口),该接口对应我们的 DAO 层。在该接口中,定义了我们常见的方法签名,这样就可以方便我们对表进行操作。例如:查询(select)、插入(insert)、更新(update)和删除(delete)操作。

以为项目中的代码为例,我有一个实体类User,需要对其进行CRUD,那么我直接在 DAO 层去继承 BaseMapper 接口即可。

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

这样我就可以直接使用里面的各种API了,非常的方便。另外,我发现了一个mybatis-plus的简洁教程,可以很方便的查询一些知识点,文末自取。

但是后来在开发过程中,发现BaseMapper接口中的insert()不能满足我的需求了,而在Service接口中,发现有个saveOrUpdateBatch()可以使用,果断拥抱之。

二、使用 Service 接口

除了 BaseMapper 接口,MyBatis Plus 还提供了 IService 接口,该接口对应 Service 层。MyBatis Plus 的通用 Service CRUD 实现了 IService 接口,进一步封装 CRUD。为了避免与 BaseMapper 中定义的方法混淆,该接口使用 get(查询单行)、remove(删除)、list(查询集合)和 page(分页)前缀命名的方式进行区别。

这个既然是对应 Service 接口,那么也就要用在 service 层。

还是要处理刚才的User类,DAO 层仍然是需要的:

@Mapper
public interface AddressListMapper extends BaseMapper<User>{

}

然后在 service 层的接口继承IService,泛型是User实体类:

public interface AddressListService extends IService<User> {
    /**
     * 同步用户信息到数据库
     */
    void saveUsers();
}

最后在 service 的实现层中,继承ServiceImpl,泛型中传入mapper和实体类:

@Service
public class AddressListServiceImpl extends ServiceImpl<AddressListMapper, User> implements AddressListService {

}

现在就可以使用 mybaits-plus service接口中提供的api了。

我使用的是saveOrUpdateBatch,这个要注意下,是通过自定义的唯一索引进行批量保存更新的,所以我要去实体类User中使用@TableId标记出唯一索性。

    /**
     * 邮箱
     */
    @TableId
    private String email;

最后,放上教程链接:https://www.jb51.net/article/222180.htm

上一篇:基于Scala和Java方法的相互调用

栏    目:JAVA代码

下一篇:详解 Java HashMap 实现原理

本文标题:Mybatis-Plus接口BaseMapper与Services使用详解

本文地址:http://www.codeinn.net/misctech/227437.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有