回到顶部

一、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 是什么?相关推荐

  1. TkMybatis 笔记

    1 通用TkMybatis笔记 1 引入 1.1作用  替我们生成常用增删改查操作的SQL 语句. 1.2代码官方发布地址 https://gitee.com/free https://gitee.c ...

  2. Java代码TkMyBatis通用Mapper中新增数据时同时获取自增主键ID,与适用uuid 做主键时获取 id

    一 . MyBatis mapper.xml文件中在xml 1.   加入 这句 :useGeneratedKeys="true" keyProperty="ID&quo ...

  3. 使用TkMybatis逆向生成带中文注释文件,并使用其常用的方法

    首先说明,博主用的是springboot,如使用原生态的mybatis的一些配置文件请自行百度 贴上pom文件 <?xml version="1.0" encoding=&q ...

  4. springboot整合tk-mybatis框架搭建

    项目结构截图放在文末了,图片太大怕影响观看体验,想模仿搭建项目的可以拉到底看下截图再动手不迟. 第一步:依赖 <properties><project.build.sourceEnc ...

  5. 在Maven项目中使用tk-mybatis(不结合SpringBoot)

    什么是tk-mybatis 通用 Mapper4(tk-mybatis) 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及Example 相关的单表操作.通用 Ma ...

  6. TkMybatis使用学习以及Example条件设置

    TkMybatis使用学习以及Example条件设置 一.导入依赖 二.表结构以及代码 1.GenerationType知识 2.表结构 三.增删改查 1.基本结构 2.增 2.1.insert in ...

  7. 【SpringBoot学习】28、Spring Boot 整合 TKMybatis 通用 Mapper

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

  8. Springboot 整合tk-mybatis , 妈妈,我再也不想敲CRUD的代码了!

    前言 码农这一生,做的最多的四件事,不是吃喝玩乐,而是  增加(Create).检索(Retrieve).更新(Update)和删除(Delete)  . 泪目. 为何我要写这篇文章,是有感而发,请看 ...

  9. SpringBoot整合TkMybatis(通用mapper)

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

  10. tkMybatis基本用法(二)

    概述 考虑到基本数据类型在Java类中都有默认值,会导致Mybatis在执行相关操作时很难判断当前字段是否为null,所以在Mybatis环境下使用java实体类时尽量不要使用基本数据类型,都使用对应 ...

最新文章

  1. 【学习笔记】生产订单实际价格差异计算
  2. 数据类型转换_自动转换
  3. 使用 CXF 做 webservice 简单例子
  4. 对症下药,方能药到病除——如何修复drv?
  5. vue中的传参的两种方式
  6. nodejs+socket.io用nginx反向代理提示400 Bad Request及ws://…无法连接的解决方法
  7. oracle学习-数据迁移
  8. jquery获取json对象中的key小技巧
  9. layui开发使用文档(镜像网址)
  10. Proxy server got bad address from remote server
  11. 《腾讯产品启示录》学习笔记
  12. 游戏建模教程:肌肉建模丨人体比例及肌肉骨骼介绍
  13. 【B-分子】2020上海高校程序设计竞赛暨第18届上海大学程序设计联赛夏季赛(同步赛)
  14. 华为服务器修改root密码,华为云服务器root权限设置密码
  15. 自己整理的:学习verilog DHL问题笔记——Quartus常见错误
  16. ProxmoxVE6.2 Bond配置
  17. 沐风:如何创造更多的睡后收入?
  18. 写给开发人员的实用密码学 - 国密对称加密算法SM4实现要点
  19. XSS Challenges/刷题/Stage #4
  20. 友基s400手写板怎么安装_电脑手写板安装步骤 手写板怎么用

热门文章

  1. PCL .stl格式转成.pcd格式点云文件
  2. 代码实现 outerHTML
  3. Vue项目 设置实时时间(年月日 时分秒)两种方法
  4. 迅雷SVIP版(资源下载神器)官方中文版V11.1.2.1078 | 迅雷不限速版下载
  5. Matlab PCA+SVM人脸识别(二)——GUI界面设计
  6. 博科光纤交换机配置及管理 CLI篇
  7. android 网易音乐sdk,Netease Music SDK 开发文档
  8. ifix组态软件研究控制按钮权限
  9. 计算机端口lpt,教你把USB、COM串口打印机映射到LPT端口
  10. 【CAS】CAS原理