TKmybatis的框架介绍和原理解析

网友投稿 780 2023-03-05

TKmybatis的框架介绍和原理解析

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;

}

映射数据库表和实体对象,类似的注解还http://有 @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 注解来完成,如果你使用过ZzCrVqVchT @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 的控制更强一点。

相关链接:1. mybatis @SelectProvider 注解, 打赌你没有用过

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详解mybatis @SelectProvider 注解
下一篇:微信电脑上如何打开小程序(微信电脑上如何打开小程序权限)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~