【SpringBoot学习】28、Spring Boot 整合 TKMybatis 通用 Mapper
文章目录
- 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相关推荐
- spring boot整合mybatis+通用mapper+pagehelper分页插件
spring boot整合mybatis+通用mapper+pagehelper分页插件 pom依赖 <?xml version="1.0" encoding="U ...
- SpringBoot整合TkMybatis(通用mapper)
TkMybatis目录 SpringBoot整合TkMybatis(通用mapper) SpringBoot整合TkMybatis(通用mapper)(自定义xml文件) 源码 GitHub: htt ...
- Elasticsearch学习(3) spring boot整合Elasticsearch的原生方式
前面我们已经介绍了spring boot整合Elasticsearch的jpa方式,这种方式虽然简便,但是依旧无法解决我们较为复杂的业务,所以原生的实现方式学习能够解决这些问题,而原生的学习方式也是E ...
- 2.SpringBoot学习(二)——Spring Boot ConfigurationProperties
1.简介 1.1 概述 Annotation for externalized configuration. Add this to a class definition or a @Bean met ...
- h2 不能访问localhost_个人学习系列 - Spring Boot 整合 H2
每当有项目需要访问数据库的时候总是很苦恼,因为无论哪个数据库都比较庞大,运行起来也比较耗内存,有没有简单可以随项目启动的数据库吗?有,H2来了... 1. 搭建Spirng Boot项目 如果启动出现 ...
- 《spring-boot学习》-14-spring boot整合freeMarker模板
1.美图 1.新建一个maven web项目 2.pox.xml中配置 <project xmlns="http://maven.apache.org/POM/4.0.0" ...
- Spring Boot整合Shiro + Springboot +vue
目录 02 Spring Boot整合Shiro p1.shiro概述 1 什么是Shiro 2 Shiro核心组件 p2.Shiro实现登录认证 AccountRealm.java QueryWra ...
- springboot整合hibernate_峰哥说技术系列-17 .Spring Boot 整合 Spring Data JPA
今日份主题 Spring Boot 整合 Spring Data JPA JPA(Java Persistence API)是用于对象持久化的 API,是Java EE 5.0 平台标准的 ORM 规 ...
- Spring Boot基础学习笔记08:Spring Boot整合Redis
文章目录 零.学习目标 1.熟悉Redis相关概念 2.掌握使用Spring Boot整合Redis 一.Redis概述 1.Redis简介 2.Redis优点 (1)存取速度快 (2)数据类型丰富 ...
最新文章
- ModuleNotFoundError: No module named 'win32api'
- PHP new self什么,php new self()是什么意思
- 使用Memcached提高.NET应用程序的性能
- 角反射器的功能及应用
- 2064: 分裂 - BZOJ
- 【复习】使用 SQLiteDatabase 操作 SQLite 数据库
- 动态规划法实现最优二叉搜索树
- 【动态规划】天上掉馅饼
- python tkinter画笑脸_tkinter绘制红绿灯图案
- angular 解决闪烁问题_AngularJS页面访问时出现页面闪烁问题的解决
- delphi xe3 mysql,delphi10.3安装使用mySQL
- LC152---乘积最大子数组
- 苹果手机扬声器没声音怎么办_苹果手机没有声音处理办法 !
- 构造可以使n个城市连接的最小生成树—C语言实现
- UOJ #589. 图图的游戏
- idea列模式按列选取代码或按行选取代码快捷键
- 他用一生换一个资本帝国
- 【统计技术】数据挖掘在反欺诈中的应用
- 计算点到直线/线段的距离
- IC/NFC/RFID之间的关系