目录

1.1 通用mapper简介

1.2 通用mapper快速入门(文档)

1.3 添加依赖

1.4和 Spring 集成

1.4.1 XML 配置

1.使用 MapperScannerConfigurer

2.XML 配置使用 Configuration

1.4.2 实体类映射

1.4.3 创建Mapper接口


1.1 通用mapper简介

通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及Example相关的单表操作,与mybatisplus相似,对mybatis制作增强不做修改。为什么要用通用mapper?我们这里列举一下原生Mybatis的痛点:

1、mapper.xml文件里有大量的sql,当数据库表字段变动,配置文件就要修改

2、需要自己实现sql分页,select * from table where . . . limit 1,3

自己手写分页,除了传参page、pageSize,还需要返回条目总数count。

3、数据库可移植性差:如果项目更换数据库,比如oracle-->mysql,mapper.xml中的

sql要重新写,因为Oracle的PLSQL 和mysql 支持的函数是不同的。

4、生成的代码量过大。

5、批量操作,批量插入,批量更新,需要自写。而这些,通过通用mapper就可以很轻松的解决了。

1.2 通用mapper快速入门(文档)

在线官方文档:https://gitee.com/free/Mapper/wikis/Home

官方的文档中介绍了通用mapper的三种使用方式 ,纯java使用方式、与Spring集成方式、与SpringBoot集成方式。我们这里给大家介绍的是与Spring集成方式,其他方式可自行学习。

1.3 添加依赖

在开始配置前,先添加相关的依赖。

正常情况下,Spring 和 MyBatis 的集成环境中,应该已经存在下面的依赖:

<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>版本号</version>
</dependency>
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>版本号</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>版本号</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>版本号</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>版本号</version>
</dependency>

通用 Mapper 支持 MyBatis 3.2.4+

集成通用 Mapper 在上面的基础上添加下面的依赖:

<dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId><version>最新版本</version>
</dependency>

tk.mybatis:mapper 依赖包含了通用 Mapper 的基础代码以及和 Spring 集成必须的代码

1.4和 Spring 集成

和 Spring 进行集成时,分为 XML 和注解配置两种方式,每种方式又有不同的配置方式。

这里提供了很多配置方式,使用时选择一种改动最小的方式即可!

1.4.1 XML 配置

1.使用 MapperScannerConfigurer

和通用 Mapper 以前版本一样,可以直接使用 tk.mybatis 提供的 tk.mybatis.spring.mapper.MapperScannerConfigurer 进行配置,这个配置和 MyBatis 官方提供的 org.mybatis.spring.mapper.MapperScannerConfigurer 区别只是第一层的包名,tkorg。所以使用这种方式时,如果你项目已经使用 org. 进行了配置,只需要改成 tk. 即可。

<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="扫描包名"/>
</bean>

如果你需要对通用 Mapper 进行特殊配置,可以按下面的方式进行配置:

<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="tk.mybatis.mapper.mapper"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/><property name="properties"><value>参数名=值参数名2=值2...</value></property>
</bean>

可用配置的参数请看后续的配置文档,配置参数时一行写一个值。

2.XML 配置使用 Configuration

如果某些第三方也需要特殊的 MapperScannerConfigurer 时,就不能用上面的方式进行配置了,此时可以选择下面这种方式,这种方式要求使用MyBatis (3.4.0+) 和 mybatis-spring (1.3.0+),配置方式如下:

<!--使用 Configuration 方式进行配置-->
<bean id="mybatisConfig" class="tk.mybatis.mapper.session.Configuration"><!-- 配置通用 Mapper,有三种属性注入方式 --><property name="mapperProperties"><value>notEmpty=true</value></property>
</bean><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="configuration" ref="mybatisConfig"/>
</bean><!-- 不需要考虑下面这个,注意这里是 org 的 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="tk.mybatis.mapper.configuration"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

这里使用了 tk.mybatis.mapper.session.Configuration ,也就是不能通过读取 mybatis-config.xml 进行配置,上面这种配置更直接,使用 Spring setter 配置属性更方便。当需要配置通用 Mapper 时,使用 mapperProperties 属性配置即可,配置方式和前面的相同,一行一个配置即可。

配置了一个 mybatisConfig 的 bean 后,在 SqlSessionFactoryBean 中注入即可。

后面的 MapperScannerConfigurer 只是为了说明这里不需要使用 tk. 开头的类进行配置。

这种配置方式基本上和任何第三方都不会冲突,如果你遇到了第三方重写 SqlSessionFactoryBean 的情况,就使用前一种方式配置即可。

1.4.2 实体类映射

@Table(name = "tb_brand")
public class Brand implements Serializable {@Idprivate Integer id;private String name;private String image;private String letter;private Integer seq;//getter and setter ....}
@Table是指定实体类对应的数据库表 @Id指的是主键映射。经过上面简单的配置后,相
当于就有了 MyBatis 中的关系映射了

1.4.3 创建Mapper接口

public interface BrandMapper extends Mapper<Brand> {
}
这里继承了 tk.mybatis.mapper.common.Mapper 接口,在接口上指定了泛型类
型 Brand 。当你继承了 Mapper 接口后,此时就已经有了针对 Brand 的大量方法,方
法如下:
这些方法中和 MBG 生成的大部分方法都一致,还有一部分 MBG 之外的常用方法。
基础接口select
List<T> select(T record)
根据T对象中的属性名称查询,类似于select * from table where t.name=#{name} and
t.password = #{password}
T selectOne(T record)
根据实体中的属性进行查询,只能有一个返回值,有多个结果是抛出异常,查询条件使用等号
T selectByPrimaryKey(Object key)
根据主键查询 说明:根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条
件使用等号
int selectCount(T record);
说明:根据实体中的属性查询总数,查询条件使用等号
基础接口insert
int insert(T record);
说明:保存一个实体,null的属性也会保存,不会使用数据库默认值
int insertSelective(T record);
说明:保存一个实体,null的属性不会保存,会使用数据库默认值
基础接口Update
int updateByPrimaryKey(T record);
说明:根据主键更新实体全部字段,null值会被更新
int updateByPrimaryKeySelective(T record);
说明:根据主键更新属性不为null的值
基础接口delete
int delete(T record);
说明:根据实体属性作为条件进行删除,查询条件使用等号
int deleteByPrimaryKey(Object key);
说明:根据主键字段进行删除,方法参数必须包含完整的主键属性

通用mapper(mapper-mybatis)相关推荐

  1. 手把手教你如何玩转插件:通用Mapper和Mybatis generator

    情景引入: 小白:起床起床了,,,,太阳都晒屁股了. 我:好不容易有个睡懒觉的机会,你又把我吵起来干嘛呢?不能给我放一个假吗? 小白:不可以不可以,我又遇到了一个问题,我需要你的帮忙,你赶紧帮我想想办 ...

  2. 整合mybatis——使用纯注解整合、使用Mapper+Mapper.xml整合、使用mybatis.cfg.xml整合

    引入druid <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-b ...

  3. 【Bug解决】Could not find resource com/kuang/mapper/Mapper.xml

    在使用mybatis时,遇到这个问题: Could not find resource com/kuang/mapper/Mapper.xml 解决方案: 1.首先检查mapper文件中,result ...

  4. 关于class path resource [mapper/*Mapper.xml] cannot be opened because it does no exists

    关于class path resource [mapper/*Mapper.xml] cannot be opened because it does no exists异常的一些记录 这是用spri ...

  5. 关于集成通用mapper的Mybatis代码生成器产生的model类注解

    主要是@Table.@Id.@GeneratedValue.@Column 4个注解 这四个注解都来自javax.persistence包,是Java持久层规范,单纯的Mybatis并不认识这四个注解 ...

  6. java元婴期(23)----java进阶(mybatis(2)---mapper代理mybatis核心配置文件输入输出映射)

    1.mapper代理 1.mybatis开发dao的方法----引入(为啥要使用mapper代理) 1.SqlSession使用范围 1.SqlSessionFactoryBuilder 通过SqlS ...

  7. Cannot invoke “com.**.mapper.**Mapper.insert(Object)“ because “this.**Mapper“ is null

    在创建springboot 项目搭建mybatis plus时候使用 bannerMapper 执行新增操作,报错提示,导入的bannerMapper 是空,不存在. 在上面是引入的 bannerMa ...

  8. Mybatis通用Mapper

    极其方便的使用Mybatis单表的增删改查 项目地址:http://git.oschina.net/free/Mapper 优点? 不客气的说,使用这个通用Mapper甚至能改变你对Mybatis单表 ...

  9. SpringBoot整合Mybatis,使用通用mapper和PageHelper进行分页

    乐哉码农 上节介绍了如何整合Security,这节就说下如何再Springboot下使用持久层框架mybatis和牛人封装的通用mapper与mybatis的整合,直接进入正题吧! 1.首先引入我们需 ...

  10. mybatis通用mapper_全网最全Mapper解析,附实操代码帮你更好理解

    今天给大家介绍一位老朋友 当你第一次接触Java开发的时候,这个老朋友就和你形影不离,当你要进行ORM的时候,单表的增删改查,这位老朋友给了你极大的帮助,不知道你想到他了吗?对,这就是通用mapper ...

最新文章

  1. 一起谈.NET技术,在Mono 2.8上部署ASP.NET MVC 2
  2. 介绍几款Web TimeSheet相关的软件
  3. 微盟耗时 145 个小时弥补删库,血亏 1.5 亿元!
  4. 95-10-045-启动-LogDirFailureChannel
  5. imx6 android power off
  6. sql server 2005 T-SQL @@TOTAL_WRITE (Transact-SQL)
  7. pl/sql 存储过程实例
  8. Displaytag 详解
  9. AndroidStudio
  10. 【原创】快速上手使用思维导图
  11. Windows Print Spooler CVE-2021-1675 漏洞复现
  12. hackthebox的网站使用教程
  13. 6-3 统计专业人数 (15 分)
  14. vue实现在用户关闭或刷新浏览器当前网页时弹出提示“系统可能不会保存您所做的更改”
  15. idea安装之后打不开,如何解决
  16. 有意思的程序员老黄历
  17. 推荐系统的中的正排和倒排
  18. Geth-1.9.10私链搭建
  19. 各大网站字体样式设置解读,css(4)
  20. Excel 所有红色字体的求和

热门文章

  1. a类计算机机房建设标准,A类机房建设标准和B类机房建设标准有什么差别
  2. 如何快速的开发单片机
  3. C++编写一个求x的n次方的函数(其中n为非负整型)
  4. sqlplus连接到远程数据库
  5. ubuntu docker dm_task_run failed error
  6. 极兔速递 一面面试题
  7. 短跑运动员求一个记时小程序
  8. 2019年1月即将上映的热门电影推荐,赶快来先睹为快吧!
  9. mongodb数据库学习日记(一)
  10. web2.0涉及的一些技术摘要