初识 tk.mybatis.mapper
更新日期:
在博客园发表Mybatis Dynamic Query后,一位园友问我知不知道通用mapper,仔细去找了一下,还真的有啊,比较好的就是abel533写的tk.mybatis.mapper。
本次例子地址:https://github.com/wz2cool/tk-mybatis-demo
传统Mybatis用法
Spring boot
引用基本的jar到pom
1 | <dependency> |
sql 数据准备
1 | DROP TABLE IF EXISTS category; |
entity
1 | public class Product { |
Dao
这里的ProductDao 是传统的mybatis的用法。
1 |
|
mapper
传统mybatis 我们必须有个xml 文件和Dao 对应起来, tk.maybatis.mapper无需此文件。
1 | <mapper namespace="com.github.wz2cool.demo.tk.mybatis.mapper.ProductDao"> |
设置扫描包
1 |
|
application.properies
注意这里的配置只是针对我们传统mybatis配置,对于tk.maybatis.mapper可以省略这里的配置。
1 | mybatis.type-aliases-package=com.github.wz2cool.demo.tk.mybatis.mapper |
测试
我们可以简单调用一下
1 |
|
我们可以看到输出结果,基本上就通了
1 | ==> Preparing: SELECT * FROM product |
tk.mybatis.mapper 用法
添加引用
需要多添加两个引用 (ps:曾经少了一个mapper-spring-boot-starter,报错死活找不到为什么–!!!)
1 | <dependency> |
继承通用mapper
嗯 是的没有xml 文件。
1 | public interface CategoryDao extends Mapper<Category> { |
测试调用
dao 里面自带很多方法,比如 selectAll(), insert().
1 |
|
输出结果
1 | ==> Preparing: SELECT category_id,category_name,description FROM category |
tk.mybatis.mapper 初步使用感受
优势
- 无需xml文件和Dao 对应。
- 无需指定xml 文件位置(因为就没有xml文件)。
- 自带多种常用方法。
困惑(仅代表个人观点)
- 自带的方法多但是有些方法理解很晦涩,比如 deleteByExample(Object var1),这里给一个object 我都不知道要填什么,是填写主键呢还是这个实体呢?(后来了解其实example 应该是一个筛选条件)
tk.mybatis.mapper(Criteria) 筛选
在理解Example 以后,就开始了解了 Criteria 筛选,当然Example 还是可以做排序的。
来看看 tk.mybatis.mapper 筛选是如何做的
1 |
|
输出结果
1 | ==> Preparing: SELECT category_id,category_name,description FROM category WHERE ( category_id = ? or category_id = ? ) |
结束
这个只是我初次使用tk.mybatis.mapper 确实不错,可以减少工作量,好像还有可以生成Dao和mapper 的工具,这个我以后再试试看。
要有自己的Mapper
看了 tk.mybatis.mapper 以后,觉得通用mapper 也应该加入到 Mybatis Dynamic Query 中去,当然实现可能有点不一样。
关于 tk.mybatis.mapper 问题
这里真的想问问园友了
- tk.mybatis.mapper 支持多表筛选么(join),我自己好像没有找到。
- tk.mybatis.mapper 支持组么,就是类似于 (id > 1 and id < 5) and price = 10.
关注我 ##
最后大家可以关注我和 Mybatis-Dynamic-query项目 ^_^
Follow @wz2cool Star Fork