zoukankan      html  css  js  c++  java
  • 关于mybatis-plus中Service和Mapper的分析

    在后端开发过程中,如果有用到mybatis-plus,肯定会发现在其内部存在着两种数据库操作接口,Iservice和BaseMapper,如果只是用增删改查会发现两者的功能是一致的,除了方法名称有所不同,其他的基本相似。对此,我颇为好奇,便打开两个接口的源码进行对比。

    先演示一下基本开发中的继承关系,手动创建的Service继承于ServiceImpl,并加载自己创建的Mapper

    @Service
    public class RestDeptService extends ServiceImpl<RestDeptMapper, RestDept> {
    
        @Resource
        private RestDeptMapper restDeptMapper;
        
     }
     
     public interface RestDeptMapper extends BaseMapper<RestDept> {
     
     }
    
    

    如上,就是一般开发的基本模版代码,足以满足各种需求功能,但点开源码时,便进入新世界的大门。

    先看一下继承结构

    这样看,是不是很神奇,我们继承的ServiceImpl依旧实现了BaseMapper接口和Iservice接口,这就感觉有点啰嗦了,明明我们单独写了RestDeptMapper,并且继承了BaseMapper,现在ServiceImpl还是实现了BaseMapper,那我直接一个Service用下来不就行了,创建两套类,功能相似,还容易混乱,代码结构冗余。

    本着“存在即合理”的理念,我们对比一下两个接口的方法。

    果然,Service简直是BaseMapper的大扩充,不但包含了所有基本方法,还加入了很多批处理功能,我们可以看一下官网对这两种接口的说明。

    官网链接:https://mp.baomidou.com/guide/crud-interface.html#remove

    Service CRUD 接口

    说明:

    • 通用 Service CRUD 封装IService接口,进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆,
    • 泛型 T 为任意实体对象
    • 建议如果存在自定义通用 Service 方法的可能,请创建自己的 IBaseService 继承 Mybatis-Plus 提供的基类
    • 对象 Wrapper 为 条件构造器

    Mapper CRUD 接口

    说明:

    • 通用 CRUD 封装BaseMapper接口,为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器
    • 泛型 T 为任意实体对象
    • 参数 Serializable 为任意类型主键 Mybatis-Plus 不推荐使用复合主键约定每一张表都有自己的唯一 id 主键
    • 对象 Wrapper 为 条件构造器

    最后本文还是比较水的,只是简单的看了一下结构而已,没有太多的深入,总结一下,以我平时粘贴复制的经验来看,Service虽然加入了数据库的操作,但还是以业务功能为主,而更加复杂的SQL查询,还是要靠Mapper对应的XML文件里去编写SQL语句。

  • 相关阅读:
    HDU Problem 1811 Rank of Tetris【拓扑排序+并查集】
    POJ Problem 2367 Genealogical tree【拓扑排序】
    HDU Problem 2647 Reward【拓扑排序】
    HDU Problem 1285 确定比赛名次【拓扑排序】
    HDU Problem HDU Today 【最短路】
    HDU Problem 3665 Seaside【最短路】
    HDU Problem 一个人的旅行 【最短路dijkstra】
    HDU Problem 1596 find the safest road【最短路dijkstra】
    Beyond Compare文本合并进行内容替换要注意什么
    用这些工具都可以比较代码的差异
  • 原文地址:https://www.cnblogs.com/xiami2046/p/13859420.html
Copyright © 2011-2022 走看看