MyBatis 为什么需要通用 Mapper ?

一、通用 Mapper 的用途 ?

我个人最早用 MyBatis 时,先是完全手写,然后用上了 MyBatis 代码生成器(简称为 MBG),在使用 MBG 过程中,发现一个很麻烦的问题,如果数据库字段变化很频繁,就需要反复重新生成代码,并且由于 MBG 覆盖生成代码和追加方式生成 XML,导致每次重新生成都需要大量的比对修改。除了这个问题外,还有一个问题,仅仅基础的增删改查等方法,就已经产生了大量的 XML 内容,还没有添加一个自己手写的方法,代码可能就已经几百行了,内容多,看着比较碍事。

因为很多人都在使用 MBG,MBG 中定义了很多常用的单表方法,为了解决前面提到的问题,也为了兼容 MBG 的方法避免项目重构太多,在 MBG 的基础上结合了部分 JPA 注解产生了通用 Mapper。通用 Mapper 可以很简单的让你获取基础的单表方法,也很方便扩展通用方法。使用通用 Mapper 可以极大的提高你的工作效率。

二、快速入门

为了让你更快速的了解通用 Mapper 的优势,这里会更简洁的让你了解整个过程。

首先在 Maven 项目的 pom.xml 中添加通用 Mapper 依赖:

接下来,开始具体的使用。

1. 配置实体类

通过 MBG 配合 专用代码生成器 可以直接生成实体类等基础代码,为了避免信息量过大,这里当作手工编写和配置。

有如下类:

在上面类中,我们给主键添加了 @Id,标记该字段为数据库主键。还有一个通用 Mapper 的特殊注解 @KeySql,配置的 useGeneratedKeys = true 和 MyBatis 中的 useGeneratedKeys 含义相同,意思是说使用 JDBC 的方式获取数据库自增的主键值。

经过上面简单的配置后,相当于就有了 MyBatis 中的 <resultMap> 关系映射了,特别注意,这个映射关系只对通用 Mapper 有效,自己手写方法时,需要自己处理映射关系。给大家推荐一个Java交流群:874811168 进群即可免费获取资料

2. 创建 Mapper 接口

根据上述实体类,创建对应的 CountryMapper 接口如下:

这里继承了 tk.mybatis.mapper.common.Mapper 接口,在接口上指定了泛型类型 Country。当你继承了 Mapper 接口后,此时就已经有了针对 Country 的大量方法,方法如下:

这些方法中和 MBG 生成的大部分方法都一致,还有一部分 MBG 之外的常用方法。

3. 配置通用 Mapper

为了让上述方法可以直接使用,还需要配置通用 Mapper,让项目在启动的时候,把上述方法都自动生成好,这样在运行时就可以使用上面所有的方法。

根据不同的开发环境,需要不同的配置方式,完整的内容可以 集成通用 Mapper,我们这里以最常见的 Spring 和 MyBatis 集成为例。

在集成 Spring 的环境中使用 MyBatis 接口方式时,需要配置 MapperScannerConfigurer,在这种情况下使用通用 Mapper,只需要修改配置如下:

注意官方的包名和这里 tk 包名的区别:

1.tk.mybatis.spring.mapper.MapperScannerConfigurer
2.org.mybatis.spring.mapper.MapperScannerConfigurer

3.给大家推荐一个架构交流群:874811168 进群即可免费获取资料
只有第一部分从 org 换成了 tk。

此时通用 Mapper 最简单的配置就完成了,完整的配置可以看这里 和 Spring 集成。

4. 简单使用

下面是一个简单的测试用例,实际使用中,可以直接注入 CountryMapper

该测试完整地址:Spring 集成测试用例

通用 Mapper 只是提供了基础的大量方法,遇到没有的方法时,你可以正常按照 MyBatis 的用法手写,和正常用法没有任何区别。

5. 了解更多

上面的简单的介绍已经可以应用到真正的项目中了,但是有很多细节这里都没有涉及,如果你准备加入通用 Mapper,你可以先按上述内容引入项目,然后通过更详细的文档去了解更多的细节,有很多你可能想要但是 MBG 不存在的方法,在这里都有,而且如果你想实现自己的通用方法,可以很轻松的进行扩展。

出处:https://my.oschina.net/u/3971241/blog/2249271

原文地址:https://www.cnblogs.com/wxy666/p/9815418.html

时间: 2024-11-09 01:00:03

MyBatis 为什么需要通用 Mapper ?的相关文章

Spring Boot集成MyBatis实现通用Mapper

前言 MyBatis关于MyBatis,大部分人都很熟悉.MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录.不管是DDD(Domain Driven Design,领域驱动建模)还是分层架构的风

通用Mapper使用(Maven+SSM)

1.在pom.xml中导入jar包(引入Maven依赖) <!-- 通用mapper --> <dependency> <groupId>com.github.abel533</groupId> <artifactId>mapper</artifactId> <version>2.3.4</version> </dependency> 2.在resources源文件中创建mybatis.xml配置通

Spring Boot MyBatis 通用Mapper插件集成

看本文之前,请确保你已经在SpringBoot中集成MyBatis,并能正常使用.如果没有,那么请先移步 http://blog.csdn.net/catoop/article/details/50553714 做了解后,再按本文步骤操作. 使用MyBatis在我们通过xml集中配置SQL,并通过创建接口Mapper文件来完成持久化DAO层(mybatis内部使用的是动态代理,所以我们不需要自己编写实现类). 然而在实际开发中,单表操作非常多,如果你也想像JPA.JDBC那样做一个所谓的Base

MyBatis通用Mapper开发

MyBatis通用Mapper开发 通常情况下,MyBatis 的增删改查操作需要自己在相应xml中写相关语句,但是运用相关工具,其实可以很方便的自动生成单表的所有增删改查(通用的多表联合查询还是需要自己写).也可以根据具体环境,设计相关模板,自动生成符合要求的controller和service. 使用教程:http://git.oschina.net/free/Mapper#mybatis通用mapper3具体实践:后台权限通用框架

Mybatis通用Mapper

转:http://blog.csdn.net/isea533/article/details/41457529 极其方便的使用Mybatis单表的增删改查 项目地址:http://git.oschina.net/free/Mapper 优点? 不客气的说,使用这个通用Mapper甚至能改变你对Mybatis单表基础操作不方便的想法,使用它你能简单的使用单表的增删改查,包含动态的增删改查. 程序使用拦截器实现具体的执行Sql,完全使用原生的Mybatis进行操作. 你还在因为数据库表变动重新生成x

Mybatis 通用 Mapper 3.3.9 发布

MyBatis通用Mapper3 极其方便的使用MyBatis(更多标签)单表的增删改查 支持单表操作,不支持通用的多表联合查询 通用Mapper都可以极大的方便开发人员(腾云科技ty300.com).可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法. 3.3.9 - 2016-09-04 增加selectByIds和deleteByIds,用法见通用Mapper接口大全MBG插件支持beginningDelimiter和endingDelimiter(基础教程qkxue.

教你如何开发Mybatis的通用Mapper

本文档地址: 如何开发自己的通用Mapper 博客排版不如直接在gitosc上查看,建议去上面的链接查看. 前言 自从发了通用Mapper-0.1.0版本后,我觉得对少数人来说,这可能是他们正好需要的一个工具.至少目前的通用DAO中,很少能有比这个更强大的. 但是对另一部分人来说,使用Mybatis代码生成器(我正在和一些朋友翻译这个文档,地址:MyBatis Generator)生成xml很方便,不需要使用通用Mapper. 实际上如果你无法在自己的业务中提取出通用的单表(多表实际上能实现,但

Spring Boot集成Mybatis及通用Mapper

集成Mybatis可以通过 mybatis-spring-boot-starter 实现. <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-

Mybatis通用Mapper(转)

转自:http://blog.csdn.net/isea533/article/details/41457529 极其方便的使用Mybatis单表的增删改查 项目地址:http://git.oschina.net/free/Mapper 优点? 不客气的说,使用这个通用Mapper甚至能改变你对Mybatis单表基础操作不方便的想法,使用它你能简单的使用单表的增删改查,包含动态的增删改查. 程序使用拦截器实现具体的执行Sql,完全使用原生的Mybatis进行操作. 你还在因为数据库表变动重新生成