试了一下,一对一、多对多的操作,额……
这个中间表一般就俩列,连接着两个表,SQL 也写不出来什么花样,要不中间查询语句就自动生成一下吧;
而且,这个东西发的 SQL 是不是有点多了,我还是觉得 MyBatis 原生那样一条连表查询,然后再实体类映射比较好;
看了一圈,是不是好像只支持查询?插入、更新数据时候还要手动操作中间表。
本来想加到 IService 中的,但是思考了一下,这个发的 SQL 太多了,应该避免一下,所以没有加上。
一般来说,应该避免在映射类中使用其他非数据库属性,尽量使用 vo 对象返回,所以,多对多这种查询一版都是使用 selectListByQueryAs(),这样的话能否使用像 MyBatis 原生那样,只需要写一条连表查询 SQL,然后自动映射呢?
一套 sql,自动映射。这个场景应该只有在 一对一的情况吧,比如 left join 得到结果后,进行映射。
如果是这样的话,这个是支持的:文档 https://mybatis-flex.com/zh/base/query.html#多表查询-关联查询
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
可以的,这个是没问题的。
不过要去设计出:直观、和容易理解的 api 并不容易。在 jpa 中提供了许多注解来解决一对多、多对多等场景。但用户要完全理解其含义,是非常困难的,在 flex 中完全可以去 copy jpa 的那一套逻辑,但是最终还是没有这么做,这个和技术没有关系,而是对用户来说学习成本太高。 现在的设计几乎是没有任何学习成本的。
当然,除了学习成本高以外,还涉及到很多问题:
就目前的设计,其实是一个综合权衡的结果。当然,如果就有好的想法和点子,flex 是非常乐意去改善的。
以1表示单 n表示多。
我的建议是完全兼容jpa协议实现关系映射,在此基础上完全展现mybatis-flex的灵活性,hibernate可以说是spring入门新手必学课没有必要担心用户的负担
Sign in to comment