文章目录

  • Spring Boot 整合 TKMybatis
    • 自定义父类接口
    • 新增接口
    • 新增之后回显 Id
    • 更新
    • 删除
    • 单查询
    • 查询列表
    • 计数
    • 条件构造器
  • 技术分享区

Spring Boot 整合 TKMybatis

TKMybatis 也叫作 Mybatis Mapper,都是同一个东西,官方文档地址

Boot 整合定律
1、添加 pom.xml 相关依赖
2、修改配置文件
3、添加注解,KO

相关依赖

<!-- 通用Mapper启动器 -->
<dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.1.0</version>
</dependency>

配置文件添加配置

# mybatis
mybatis:type-aliases-package: cn.tellsea.skeleton.business.entityconfiguration:map-underscore-to-camel-case: true

整合 TKMybatis,启动类添加注解扫描即可

@MapperScan("cn.tellsea.skeleton.business.mapper")

整合完整,简单吧

自定义父类接口

了解过 TKMybatis 的人都知道,他的使用方式是通过持久层继承接口,从而直接调用已经写好的方法,首先我们定义需要的基类公共接口,让实际业务的 Mapper 层继承接口即可,下面是我整理的最常用接口:

/*** 自定义通用mapper需要继承的接口** @param <T> 不能为空* @author Tellsea* @date 2019/7/13*/
public interface MyMapper<T> extends Mapper<T>, DeleteByIdsMapper<T>, MySqlMapper<T>, BatchMapper<T> {// Mapper 基础接口// DeleteByIdsMapper 支持批量删除// MySqlMapper 支持批量新增// BatchMapper 支持批量更新}

实际使用中,将我们的 Mapper 接口继承上面的自定义接口,即可使用所有基本功能

public interface UserInfoMapper extends MyMapper<UserInfo> {}

然后在调用时,注入 UserInfoMapper 即可直接使用。

新增接口

当继承了自定义 Mapper 接口时,已经可以使用方法了

/*** 新增所有字段** @param record*/
void insert(T record);/*** 新增非空字段** @param record*/
void insertSelective(T record);/*** 批量新增** @param recordList*/
void insertList(List<? extends T> recordList);/*** 新增,采用数据库主键策略** @param record*/
void insertUseGeneratedKeys(T record);

新增之后回显 Id

第一步,检查实体类的 Id 属性是否开启了注解

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

@GeneratedValue 注解的 strategy 属性提供四种值

属性值 说明
AUTO 主键由程序控制, 是默认选项 ,不设置就是这个
IDENTITY 主键由数据库生成, 采用数据库自增长, Oracle 不支持这种方式
SEQUENCE 通过数据库的序列产生主键, MYSQL 不支持
Table 提供特定的数据库产生主键, 该方式更有利于数据库的移植

第二步,直接新增之后调用实体类的 GetId 方法,即可拿到回显 Id,简单吧!!!

@Test
private void test() {UserInfo userInfo = new UserInfo();userInfoService.insertSelective(userInfo);System.out.println(userInfo.getId());
}

更新

/*** 根据主键更新全部字段** @param record*/
void updateByPrimaryKey(T record);/*** 根据主键更新非空字段** @param record*/
void updateByPrimaryKeySelective(T record);/*** 根据Example条件更新所有字段** @param record* @param example*/
void updateByExample(T record, Object example);/*** 根据Example条件更新非空字段** @param record* @param example*/
void updateByExampleSelective(T record, Object example);/*** 批量更新** @param recordList*/
void updateBatchByPrimaryKeySelective(List<? extends T> recordList);

删除

/*** 根据实体非空字段删除** @param record*/
void delete(T record);/*** 根据主键删除** @param key*/
void deleteByPrimaryKey(Object key);/*** 根据主键字符串进行删除* 类中只有存在一个带有@Id注解的字段** @param ids 如 "1,2,3,4"*/
void deleteByIds(String ids);/*** 根据Example条件删除数据** @param example*/
void deleteByExample(Object example);

单查询

/*** 根据主键查询** @param key* @return*/
T selectByPrimaryKey(Object key);/*** 根据实体字段查询** @param record* @return*/
T selectOne(T record);/*** 根据Example条件查询** @param example* @return*/
T selectOneByExample(Object example);

查询列表

/*** 根据实体非空字段查询** @param record* @return*/
List<T> select(T record);/*** 查询所有** @return*/
List<T> selectAll();/*** 根据Example条件查询** @param example* @return*/
List<T> selectByExample(Object example);/*** 根据非空实体字段和边界查询* 能实现分页功能(不推荐使用)** @param record* @param rowBounds* @return*/
List<T> selectByRowBounds(T record, RowBounds rowBounds);/*** 根据Example条件和边界查询** @param example* @param rowBounds* @return*/
List<T> selectByExampleAndRowBounds(Object example, RowBounds rowBounds);

计数

/*** 根据实体非空属性计数** @param record* @return*/
int selectCount(T record);/*** 根据构造查询条件计数** @param example* @return*/
int selectCountByExample(Object example);

条件构造器

Example example = new Example(UserInfo.class);
Example.Criteria criteria = example.createCriteria();

绝大多数的 sql 语句都能构建,没毛病

技术分享区

【SpringBoot学习】28、Spring Boot 整合 TKMybatis 通用 Mapper相关推荐

  1. spring boot整合mybatis+通用mapper+pagehelper分页插件

    spring boot整合mybatis+通用mapper+pagehelper分页插件 pom依赖 <?xml version="1.0" encoding="U ...

  2. SpringBoot整合TkMybatis(通用mapper)

    TkMybatis目录 SpringBoot整合TkMybatis(通用mapper) SpringBoot整合TkMybatis(通用mapper)(自定义xml文件) 源码 GitHub: htt ...

  3. Elasticsearch学习(3) spring boot整合Elasticsearch的原生方式

    前面我们已经介绍了spring boot整合Elasticsearch的jpa方式,这种方式虽然简便,但是依旧无法解决我们较为复杂的业务,所以原生的实现方式学习能够解决这些问题,而原生的学习方式也是E ...

  4. 2.SpringBoot学习(二)——Spring Boot ConfigurationProperties

    1.简介 1.1 概述 Annotation for externalized configuration. Add this to a class definition or a @Bean met ...

  5. h2 不能访问localhost_个人学习系列 - Spring Boot 整合 H2

    每当有项目需要访问数据库的时候总是很苦恼,因为无论哪个数据库都比较庞大,运行起来也比较耗内存,有没有简单可以随项目启动的数据库吗?有,H2来了... 1. 搭建Spirng Boot项目 如果启动出现 ...

  6. 《spring-boot学习》-14-spring boot整合freeMarker模板

    1.美图 1.新建一个maven web项目 2.pox.xml中配置 <project xmlns="http://maven.apache.org/POM/4.0.0" ...

  7. Spring Boot整合Shiro + Springboot +vue

    目录 02 Spring Boot整合Shiro p1.shiro概述 1 什么是Shiro 2 Shiro核心组件 p2.Shiro实现登录认证 AccountRealm.java QueryWra ...

  8. springboot整合hibernate_峰哥说技术系列-17 .Spring Boot 整合 Spring Data JPA

    今日份主题 Spring Boot 整合 Spring Data JPA JPA(Java Persistence API)是用于对象持久化的 API,是Java EE 5.0 平台标准的 ORM 规 ...

  9. Spring Boot基础学习笔记08:Spring Boot整合Redis

    文章目录 零.学习目标 1.熟悉Redis相关概念 2.掌握使用Spring Boot整合Redis 一.Redis概述 1.Redis简介 2.Redis优点 (1)存取速度快 (2)数据类型丰富 ...

最新文章

  1. ModuleNotFoundError: No module named 'win32api'
  2. PHP new self什么,php new self()是什么意思
  3. 使用Memcached提高.NET应用程序的性能
  4. 角反射器的功能及应用
  5. 2064: 分裂 - BZOJ
  6. 【复习】使用 SQLiteDatabase 操作 SQLite 数据库
  7. 动态规划法实现最优二叉搜索树
  8. 【动态规划】天上掉馅饼
  9. python tkinter画笑脸_tkinter绘制红绿灯图案
  10. angular 解决闪烁问题_AngularJS页面访问时出现页面闪烁问题的解决
  11. delphi xe3 mysql,delphi10.3安装使用mySQL
  12. LC152---乘积最大子数组
  13. 苹果手机扬声器没声音怎么办_苹果手机没有声音处理办法 !
  14. 构造可以使n个城市连接的最小生成树—C语言实现
  15. UOJ #589. 图图的游戏
  16. idea列模式按列选取代码或按行选取代码快捷键
  17. 他用一生换一个资本帝国
  18. 【统计技术】数据挖掘在反欺诈中的应用
  19. 计算点到直线/线段的距离
  20. IC/NFC/RFID之间的关系

热门文章

  1. 真值,原码,反码,补码介绍
  2. Vue代理解决生产环境跨域问题
  3. 百度文库免费下载文档
  4. gridmanager使用于本地数据,使用function来模拟返回后端数据。
  5. 苹果cms更换主题中遇到的坑,给大家分享一下少走弯路
  6. IPsec ACL隧道模式的路由设置
  7. android之cpu使用率
  8. Win10下IIS配置
  9. 电路中 电容的作用【大全】!
  10. 计算机一级考试表格操作2016版,2016年计算机一级考试操作题