为了账号安全,请及时绑定邮箱和手机立即绑定

关于mybatis关联查询,及到底好在哪里的疑惑。

老师您好,工作中一直未使用过mybatis,既然用户信息及密码在两张表里存着,为何不用映射关系呢?或者为什么不用关联查询返回结果而要请求两次数据库呢?看到mybatis查询返回都是对应的数据库对象,那如果我要想返回多表关联的结果该怎么做呢?个人认为mybais的xml文件写起来很麻烦,求教mybatis到底好在哪里为什么现在用mybatis的越来越多,mybatis的多表关联是不是写起来很麻烦不如直接jdbctemplate来洋洋洒洒。求教,谢谢。

正在回答

1 回答

你好:

  1. mybatis和jdbctemplate比较,的确jdbctemplate可以让你非常自由的写代码,就像直接写sql语句一样,但是这些自由度在企业级的团队内的应用是灾难性的,首先,所有人的代码落地都是基于自己的业务场景,放纵的写sql,用join,当然,必要的多对多的join是可以的,但是好几张甚至好几十张表关联在一起的应用是没有办法维护的,到那一天所有人都会发现我们的应用是完全面向数据库的设计风格,而不是面向业务模型的,等到业务发生了变化所有人都要看代码改代码到底层的sql语句级别,而且多join的数据表操作在上万数据后都是没有任何性能优化的空间,索引都不知道往哪里加,因此mybatis提供的是orm的一套框架,不是说mybatis好,而是orm在业务模型的应用中好,将数据库当作简单的存储,业务应用只感知领域模型,模型及是业务,性能优化也围绕模型去做,用缓存存模型而非单纯靠sql语句优化。

  2. 用户和密码对应的一对一关系的确可以用mybatis的关系映射做,但是试想日后我们数据库庞大到一定程度了需要拆库分表,我们第一个想到的是将只有登陆会用的密码表放到另一个数据库,将现在的user数据表放在独立的数据库内提升用户查询方面的效率,这个时候一个mybatis的映射是无法跨两个数据源的,因此性能优化又会碰到问题。我强烈推荐数据库和mybatis的dataobject做一对一关系,既方便代码的维护,又可以清晰的在model层面理清领域模型的处理关系。当然针对一些联合查询排序的问题还是要依靠join的。我说的绝对不是不用join,而是可以依靠单表操作解决的一定不要用join

3 回复 有任何疑惑可以回复我~
#1

时间丶思考 提问者

谢谢,您的解答很好,明白了一大部分,剩下的可能还是需要在实际应用中体会吧,非常感谢。
2018-12-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于mybatis关联查询,及到底好在哪里的疑惑。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信