Mybatis Dynamic Query join视图
更新日期:
项目地址:https://github.com/wz2cool/mybatis-dynamic-query
文档地址:https://wz2cool.gitbooks.io/mybatis-dynamic-query-zh-cn/content/
简介
前面基本增删改查完成,现在可以到渐进阶段。在实际查询中,我们不可能只查询一张表,我们肯定要连表查询,所以我们相当于在查询一个视图,那么和简单的单表查询有什么区别呢?这里我们就必须要用到 @Column 中tableOrAlias去指定这个列来自于哪张表,具体我们还是看例子吧。
准备工作
创建两张表,一张产品类型表,一张产品表
1 | DROP TABLE IF EXISTS category; |
关键的地方来了,我们创建个ProductView的实体类, 这里我们指定了每列来自于那长表
1 | public class ProductView { |
Dao 接口, 和其他动态查询是一样的。
1 |
|
xml 中这里注意了,我们并没有给表别别名,所以在 on 的时候一定是 [表名].[列名]
1 | <select id="getProductViewsByDynamic" parameterType="java.util.Map" |
开始查询
其实当我们定义好类中每个属性来自于哪张表以后,其他的和单表动态查询就一样了
1 |
|
输出结果我们发现,每个查询的的列都带上了表名(别名也可以)
1 | ==> Preparing: SELECT * FROM product LEFT JOIN category ON product.category_id = category.category_id WHERE (category.category_name LIKE ?) |
结束
在类中指定每个属性来自于哪个表中的那个列的映射是这个的核心。这里并不推荐使用别名类似(t1,t2)这种去设置 tableOrAlias,为什么呢?因为没有必要而且会影响你阅读代码,t1 是哪个表你要去猜测,所以推荐还是直接使用表名即可。
关注@我 ##
最后大家可以关注我和 Mybatis-Dynamic-query项目 ^_^
Follow @wz2cool Star Fork