一、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 的控制更强一点。

希望与广大网友互动??

点此进行留言吧!

Java框架tk_TKmybatis的框架介绍和原理解析相关推荐

  1. 【java】Java即时编译(JIT)器原理解析及实践

    1.概述 转载:Java即时编译(JIT)器原理解析及实践 一.导读 常见的编译型语言如C++,通常会把代码直接编译成CPU所能理解的机器码来运行.而Java为了实现"一次编译,处处运行&q ...

  2. 【卡尔曼滤波介绍与原理解析】

    [卡尔曼滤波介绍与原理解析] 学习参考外文链接:http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/. 参考链接:https:// ...

  3. Android开源框架PowerfulViewLibrary——PowerfulEditText的介绍和源码解析

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 转载请注明出处:http://blog.csdn.net/chay_chan/article/details/63685905 An ...

  4. java switch 类型_Java switch case数据类型原理解析

    这篇文章主要介绍了Java switch case数据类型原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java 中 switch cas ...

  5. Java框架tk_TKmybatis的框架介绍和原理分析及Mybatis新特性

    tkmybatis是在mybatis框架的基础上提供了很多工具,让开发更加高效,下面来看看这个框架的基本使用,后面会对相关源码进行分析,感兴趣的同学可以看一下,挺不错的一个工具 实现对员工表的增删改查 ...

  6. Android热修复(1):热修复的介绍和原理解析

    一.热修复的产生概述 在开发中我们会遇到如下的情况: 1.刚发布的版本出现了严重的bug,这就需要去解决bug.测试并打渠道包在各个应用市场上重新发布,这会耗费大量的人力物力,代价会比较大. 2.已经 ...

  7. java aqs详解_Java AQS底层原理解析

    AQS底层原理 AQS(AbstractQueuedSynchronizer)是一个抽象同步队列,JUC(java.util.concurrent)中很多同步锁都是基于AQS实现的. AQS的基本原理 ...

  8. java date类 时区_Java时区转换及Date类实现原理解析

    这篇文章主要介绍了Java时区转换及Date类实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.时区的说明 地球表面按经线从东到西,被 ...

  9. java 序列化 原理解析

    序列化相关文章: * Java 序列化 之 Serializable * Java 序列化之 Externalizable * Java 序列化 之 单例模式. 阅读本文章之前,务必要阅读上面的三篇文 ...

最新文章

  1. docker学习笔记(五)docker实战
  2. Centos运行Mysql因为内存不足进程被杀
  3. 科技公司都是如何应对 COVID-19?
  4. Mysql报too many connections详解
  5. 目标检测之2015iccv---objdetection 专题论文
  6. 华为助力“沙漠奇迹”成为高密互联的高尔夫球场
  7. wordpress各种获取url函数总结
  8. 【IoT】产品设计:如何写好硬件产品的需求文档?
  9. 使用补丁修改DSDT/SSDT [DSDT/SSDT综合教程]
  10. HTC6950新手基本操作方法
  11. oracle siebel crm 8.0,Solix实现Oracle Siebel CRM 8.1整合
  12. Cocoa-专业术语
  13. VC++分析数据包实现SMTP协议分析
  14. web大学生个人网站作业模板——上海旅游景点介绍网页代码 家乡旅游网页制作模板 大学生静态HTML网页源码
  15. word如何添加页码
  16. IT兄弟连 Java语法教程 Java平台的版本划分
  17. 《罪犯与女儿》,看完你会热泪盈眶
  18. mac电脑打不开html文件怎么处理,苹果电脑Mac打不开网页怎么办?Mac打不开网页的解决方法...
  19. Intel网卡升级iPXE固件
  20. 未来,人工智能会剥夺人类的工作吗?

热门文章

  1. TDengine 在 TCL 空调能源管理平台的实践
  2. 自顾不暇的大搜车能为吉利汽车做些什么?
  3. Tello SDK 开发避坑指南(持续更新)
  4. 基于JAVA旅行指南网站计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  5. 全球与中国扩管器驱动市场深度研究分析报告
  6. 管家婆软件如何管理商品的多种型号?
  7. 信创操作系统--麒麟Kylin桌面版 (项目七 网络连接:有线、无线网络)
  8. fasterxml-jackson发生Can not deserialize instance of的原因
  9. 【BZOJ 4892】DNA
  10. 文字转图片,文字水印图片,合成图片,教你 Python 生成网站原创配图!