对于通用mapper的一些简单理解

通用mapper可以自动生成sql语句用于mybatis框架使用。那么,通用mapper的一些基本概念,我们需要了解。

1.通用mapper是一个mybatis框架的插件。

2.通用mapper可以理解为JPA的一种实现。

3.既然是一种JPA的实现,那么,就有一些ORM的思想在其中。

4.通用mapper中有多种接口,每种接口中定义了相关方法,供使用者调用。

5.请区别JPA、spring data JPA、Hibernate这三者的区别,至于具体区别,可以通过百度查询三者的相关概念,进行区别。

下面对上述内容进行一些解释:

1.既然是插件,就算不上框架,它是基于mybatis对JPA的一种实现,是mybatis的一种封装。其实现原理相对简单,利用IOC就能做到(个人臆测,没时间看源码,欢迎斧正)。

2.既然是JPA实现。那么,就需要相关的注解来标明成员变量的一些属性和类上的表名等内容。即@Id@Column@Table等等。里面有一些小坑,比如如果你在Entity的成员变量上不加@Id注解去标明哪个是主键,那么你在调用selectByPrimaryKey方法时,他会进行多个and,把你这个表每个字段都联合起来,作为联合主键,并且每个列都要等于这个值。means会生成这样的sql

select * from table where columnA = '' and columnB = '' and ... ...;

3.那么多接口,你可以选择你去继承哪个接口,从而定制自己的通用mapper。

public interface Mapper<T> extends
        BaseMapper<T>,
        ExampleMapper<T>,
        RowBoundsMapper<T>,
        Marker {}

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在service层加上mapper是为了将数据访问和业务逻辑分离,使代码更加清晰和易于维护。mapper负责与数据库交互,而service层则负责处理业务逻辑,将mapper返回的数据进行处理后再返回给调用方。这种分层架构可以使代码更加模块化,便于单元测试和代码重用。同时,如果需要更换数据库或者更改数据访问方式,只需要修改mapper层的代码,而不需要修改service层的代码,从而降低了代码的耦合度。 ### 回答2: 在软件开发中,通常会按照分层架构的原则将应用程序划分为多个层次,如表示层、业务逻辑层和数据访问层。在这种架构中,Service层充当业务逻辑层,负责处理具体的业务逻辑。而Mapper是数据访问层的一部分,负责将业务层传递的数据转化为数据库操作。 在Service层加上Mapper具有以下几个原因: 1. 分离业务逻辑和数据访问:Service层负责处理具体的业务逻辑,而Mapper层负责处理与数据库的交互。通过将数据访问逻辑从Service层中分离出来,可以提高代码的可维护性和可测试性。 2. 降低耦合度:将Mapper层作为Service层的依赖,可以使得两者之间的耦合度降低。如果Service层直接依赖于具体的数据访问细节,当这些细节发生变化时,将需要对Service层进行修改。而通过引入Mapper层,Service层只需要与Mapper层进行交互,当数据访问层发生变化时,只需修改Mapper层即可。 3. 提高代码复用性:通过在Service层加上Mapper,可以将一些通用的数据访问操作抽象为通用的方法,在不同的Service层中进行复用。这样可以提高代码的复用性,减少代码的重复编写。 4. 层次清晰:通过在不同的层级中使用不同的组件和命名空间,可以更好地区分业务逻辑和数据访问逻辑。这有助于代码的维护和理解。 总之,在Service层加上Mapper具有分离业务逻辑和数据访问、降低耦合度、提高代码复用性和层次清晰等好处。这种分层架构的设计能够使得软件更加模块化、可维护和可扩展。 ### 回答3: 在软件开发中,为了使代码结构更加清晰和模块化,并且实现业务逻辑与数据访问逻辑的分离,我们常常采用分层架构来进行开发。其中,Service层就是负责业务逻辑的处理,而Mapper层则是负责与数据库进行数据交互的。 Service层的主要职责是处理业务逻辑,对外提供高层次的接口。它对上层模块隐藏了具体的数据访问细节,只提供简单的、易于理解和使用的方法。而Mapper层则是实现具体的数据库操作,包括查询、增加、更新和删除等。 为什么要在Service层加上Mapper呢? 首先,这种分层结构有助于代码的可维护性和可测试性。在Service层中,我们可以编写针对业务逻辑的单元测试,而不需要依赖具体的数据库操作。这样在开发和调试过程中就能更加便捷地进行。 其次,这样的分层结构能够使代码更加松耦合。Service层只需要关注业务逻辑的处理,而不需要关心具体的数据操作。这样可以减少模块间的依赖,让代码更加清晰和可扩展。 此外,将数据操作封装在Mapper层中,也使得代码更加易读和易懂。在Service层的方法中,我们只需要调用Mapper层的方法,而不需要关注具体的数据库操作细节。 总结起来,将Mapper层加在Service层中,能够将业务逻辑和数据操作进行分离,提高代码的可维护性和可测试性,降低模块之间的耦合度,使代码更加清晰易读。这样的设计可以使软件开发更加高效和可靠。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值