偶尔记一下

没事看看 - MyBatis工具

Mybatis嵌套查询的原理与例子

本篇文章用到的表以及代码:http://blog.csdn.net/isea533/article/details/19821071


本篇文章写的很,请做好准备或直接关闭该页,有嵌套查询方面的问题请留言。


最下面的3行数据,是用SQL查询出来的结果,下图是该数据和JAVA对象的对应关系。



生成RowKey的方法:RowKey是为了唯一确定一条数据。如果用户设置了主键,就用主键名+值生成RowKey,如RowKey1用的 id和1(还有一个xml的唯一ID)

假如没有设置主键id,那么就用所有属性来生成RowKey,如id+1,title+偶尔..url+http..等等,所以在mybatis中设置主键能提高效率。


嵌套对象的从属关系通过联合Key来确定,如第一条数据

id,title,url,userid,posts是BlogDto的5个属性,其中id是主键,posts是一个嵌套的List对象。


posts这个嵌套的对象通过BlogDto的RowKey来确定是不是从属于BlogDto。如果属于就会将该post对象add到posts的List中。

PostDto有几个属性,有一个嵌套对象BlogUser和一个List对象BlogComments,这两个通过相同的方法来确定从属关系。


Mybatis每次都是取出一条来确定整个关系,因而会在相同的内容上浪费一样的时间。


想讲明白这个不看代码是很难说清楚的。这里不多说了,具体的流程看下图,有问题的可以留言,整个流程的代码都在DefaultResultSetHandler.java中





下面是该流程图依据的代码,我整理到excel了,需要的可以下载,配置该流程图查看:



下载地址:

http://pan.baidu.com/s/1eTS3k


写这篇文章的时候感觉很麻烦,虽然我理解了,但是实在找不到合适的语言去描述这个,通过了解Mybatis的嵌套查询,对于复杂查询应该会更得心应手,使用嵌套查询确实方便了很多。


这篇文章写的太烂了,如果你有嵌套查询方面的问题,欢迎留言交流。

阅读更多

扫码向博主提问

去开通我的Chat快问

isea533

博客专家

MyBatis相关答疑
  • 擅长领域:
  • MyBatis
  • Spring Boo
  • Spring
版权声明:版权归博主所有,转载请带上本文链接!联系方式:abel533@gmail.com https://blog.csdn.net/isea533/article/details/19822301
文章标签: mybatis 对象 sql
个人分类: Mybatis
所属专栏: Mybatis问题集
想对作者说点什么? 我来说一句

netty学习笔记

netty学习笔记

u011647962 u011647962

2016-10-09 15:15:45

阅读数:10402

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭