TkMybatis 是什么?
回到顶部
一、TkMybatis
Tkmybatis 是基于 Mybatis 框架开发的一个工具,通过调用它提供的方法实现对单表的数据操作,不需要写任何 sql 语句,这极大地提高了项目开发效率。
回到顶部
二、怎么用?
1. 引用
在 pom.xml 中引入 tk.mybatis 的引用。
tk.mybatis
mapper-spring-boot-starter
2.1.5
2. DO 对象
@Table(name = “t_plan”)
public class PopMerchantPlanDO{
/**
* id
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* 编号
*/
private String code;
}
映射数据库表和实体对象,类似的注解还有 @Column、@ColumnType、@Transient 等等。
3. Mapper 数据库操作接口
public interface BaseDao extends BaseMapper, MySqlMapper, IdsMapper, ConditionMapper, ExampleMapper {
}
Dao 对象继承的这些接口帮你封装了一系列单表的操作,使你不用再为每个单表编写繁杂重复的 sql 语句。
当你使用 Dao 对象操作数据库的时候,只需要调用这些接口中封装好的方法,就能完成一系列对单表的 CURD 操作,比如下面的 selectAll 方法,鉴于篇幅,更多的 CURD 方法,大家可以打开 Mapper 接口自行查看,一目了然。
@RegisterMapper
public interface SelectAllMapper {
/**
* 查询全部结果
*
* @return
*/
@SelectProvider(type = BaseSelectProvider.class, method = “dynamicSQL”)
List selectAll();
}
当然,对于复杂的 SQL 语句,比如 JOIN 操作等等,仍然需要自行编写 xml 文件和 SQL 语句。
回到顶部
三、底层原理
TkMybatis 的封装依赖一个 @SelectProvider 注解来完成,如果你使用过 @Select 注解,那么 @SelectProvider 与它没有质的区别,只是在定义注解的方式上有所不同, 一个是直接定义 sql, 一个是在外部定义好 sql 直接引用。
public interface Mapper {
@Select("select uuid,full_name as name from t_system_company ")
List> getCompanyInfo();
}
@RegisterMapper
public interface SelectAllMapper {
@SelectProvider(type = BaseSelectProvider.class, method = “dynamicSQL”)
List selectAll();
}
@SelectProvider 引用的各种 *Provider.class 实现类,就是依赖反射、注解等手段拼接 SQL 语句的过程。
/**
* 查询全部结果
*
* @param ms
* @return
*/
public String selectAll(MappedStatement ms) {
final Class entityClass = getEntityClass(ms);
//修改返回值类型为实体类型
setResultType(ms, entityClass);
StringBuilder sql = new StringBuilder();
sql.append(SqlHelper.selectAllColumns(entityClass));
sql.append(SqlHelper.fromTable(entityClass, tableName(entityClass)));
// 逻辑删除的未删除查询条件
sql.append("");
sql.append(SqlHelper.whereLogicDelete(entityClass, false));
sql.append("");
sql.append(SqlHelper.orderByDefault(entityClass));
return sql.toString();
}
回到顶部
四、结语
当初从 Hibernate 换到 Mybatis,把 HQL、QBC 语句的成本换成简单的 SQL 语句,这?现在又兜兜转转回去了?
Tkmybatis 减少了一系列对单表的单调接口和繁杂的 SQL 语句,但也降低了代码的可读性,另外这种广而全的数据库操作,必然会牺牲一部分的查询性能。
可以在一些并发量不大、对性能要求不高的项目中尝试下 Tkmybatis ,对一些比较大的项目来说,还是希望自己对 SQL 的控制更强一点。
来源:www.xszhibo.com
TkMybatis 是什么?相关推荐
- TkMybatis 笔记
1 通用TkMybatis笔记 1 引入 1.1作用 替我们生成常用增删改查操作的SQL 语句. 1.2代码官方发布地址 https://gitee.com/free https://gitee.c ...
- Java代码TkMyBatis通用Mapper中新增数据时同时获取自增主键ID,与适用uuid 做主键时获取 id
一 . MyBatis mapper.xml文件中在xml 1. 加入 这句 :useGeneratedKeys="true" keyProperty="ID&quo ...
- 使用TkMybatis逆向生成带中文注释文件,并使用其常用的方法
首先说明,博主用的是springboot,如使用原生态的mybatis的一些配置文件请自行百度 贴上pom文件 <?xml version="1.0" encoding=&q ...
- springboot整合tk-mybatis框架搭建
项目结构截图放在文末了,图片太大怕影响观看体验,想模仿搭建项目的可以拉到底看下截图再动手不迟. 第一步:依赖 <properties><project.build.sourceEnc ...
- 在Maven项目中使用tk-mybatis(不结合SpringBoot)
什么是tk-mybatis 通用 Mapper4(tk-mybatis) 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及Example 相关的单表操作.通用 Ma ...
- TkMybatis使用学习以及Example条件设置
TkMybatis使用学习以及Example条件设置 一.导入依赖 二.表结构以及代码 1.GenerationType知识 2.表结构 三.增删改查 1.基本结构 2.增 2.1.insert in ...
- 【SpringBoot学习】28、Spring Boot 整合 TKMybatis 通用 Mapper
文章目录 Spring Boot 整合 TKMybatis 自定义父类接口 新增接口 新增之后回显 Id 更新 删除 单查询 查询列表 计数 条件构造器 技术分享区 Spring Boot 整合 TK ...
- Springboot 整合tk-mybatis , 妈妈,我再也不想敲CRUD的代码了!
前言 码农这一生,做的最多的四件事,不是吃喝玩乐,而是 增加(Create).检索(Retrieve).更新(Update)和删除(Delete) . 泪目. 为何我要写这篇文章,是有感而发,请看 ...
- SpringBoot整合TkMybatis(通用mapper)
TkMybatis目录 SpringBoot整合TkMybatis(通用mapper) SpringBoot整合TkMybatis(通用mapper)(自定义xml文件) 源码 GitHub: htt ...
- tkMybatis基本用法(二)
概述 考虑到基本数据类型在Java类中都有默认值,会导致Mybatis在执行相关操作时很难判断当前字段是否为null,所以在Mybatis环境下使用java实体类时尽量不要使用基本数据类型,都使用对应 ...
最新文章
- 【学习笔记】生产订单实际价格差异计算
- 数据类型转换_自动转换
- 使用 CXF 做 webservice 简单例子
- 对症下药,方能药到病除——如何修复drv?
- vue中的传参的两种方式
- nodejs+socket.io用nginx反向代理提示400 Bad Request及ws://…无法连接的解决方法
- oracle学习-数据迁移
- jquery获取json对象中的key小技巧
- layui开发使用文档(镜像网址)
- Proxy server got bad address from remote server
- 《腾讯产品启示录》学习笔记
- 游戏建模教程:肌肉建模丨人体比例及肌肉骨骼介绍
- 【B-分子】2020上海高校程序设计竞赛暨第18届上海大学程序设计联赛夏季赛(同步赛)
- 华为服务器修改root密码,华为云服务器root权限设置密码
- 自己整理的:学习verilog DHL问题笔记——Quartus常见错误
- ProxmoxVE6.2 Bond配置
- 沐风:如何创造更多的睡后收入?
- 写给开发人员的实用密码学 - 国密对称加密算法SM4实现要点
- XSS Challenges/刷题/Stage #4
- 友基s400手写板怎么安装_电脑手写板安装步骤 手写板怎么用
热门文章
- PCL .stl格式转成.pcd格式点云文件
- 代码实现 outerHTML
- Vue项目 设置实时时间(年月日 时分秒)两种方法
- 迅雷SVIP版(资源下载神器)官方中文版V11.1.2.1078 | 迅雷不限速版下载
- Matlab PCA+SVM人脸识别(二)——GUI界面设计
- 博科光纤交换机配置及管理 CLI篇
- android 网易音乐sdk,Netease Music SDK 开发文档
- ifix组态软件研究控制按钮权限
- 计算机端口lpt,教你把USB、COM串口打印机映射到LPT端口
- 【CAS】CAS原理