Java项目还在用mybatis,写sql吗?

本文只谈SQL的拼装。使用springboot搭建web项目,数据库的操作是重要一环。几乎清一色的后端框架,用的是mybatis、mybatis plus套装。其实,可以简化。

不评价MM框架的优劣。看一下web项目对数据库操作的需求是什么?作为一个支撑系统的研发者,要求高性能的DB操作,还要求高自定义的动态查询。若论性能,jdbc直连性能最高,SQL直接写在dao层,直接与jdbc驱动交互。不过直接操作jdbc的弊端是有大量代码冗余,结果集拼装时需要做map到bean的属性copy,性能也有影响。另外,根据动态查询条件拼装SQL查询语句,需要手动从参数取,再判断是否为空,如果为空则不拼装这个查询条件。这样的操作冗余较多,还需要异常处理。这是传统jdbc编程的痛点。

mybatis以及plus通过编写SQL模板化的脚本分离了jdbc操作过程,内部封装了调用jdbc的过程,开发者只需要实现接口、映射接口和写SQL模板,可以说已经非常优雅。

spring-data-jpa更是实现了jpa规范,优秀得一塌糊涂,让人迷茫于不可理喻的过度封装中,毕竟绝大多数开发需要的只是拼好一个SQL而已。

spring jdbc template 提供了进一步的优化,生掉了许多冗余代码,但是还不够精简。尤其是,不支持SQL模板式的查询。

直到spring-data-jdbc的出现,大大改善了现状。sdj是什么,这里不展开,可以自行探索。只能说,研发一个产品,需要的是支持@query注解查询和更新数据库,支持单表和主从表的确定查询(SQL不变),另外就是支持不确定查询条件时可以动态拼装查询条件生成动态SQL语句(mybatis配置SQL模板解决的问题)。

到这里,可以看出支持动态查询条件的查询SQL的拼装是数据库操作的主要痛点,框架们解决了这个问题,就可以了。wldos-framework基于spring-data-jdbc实现了够用的动态SQL查询支持,所以一直到2.0版,wldos平台依然没有用烂大街的MM框架,不是说他们不好,而是确实用不到,spring data jdbc足够灵活,性能足够高,而wldos-framework所做的封装更是青出于蓝,不完美但足够地实现了产品研发的需求。更方便的是,wldos框架写复杂SQL,不需要if语句拼装动态查询语句,只需要写主题SQL,告诉api查询条件参数、过滤参数和排序字段,然后声明涉及的表类型(或VO)、表别名,框架就可以帮你生成动态SQL。基础上封装的分页查询和全量查询,封装了动态拼装SQL的过程,只需要提供必要的参数。

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《Java项目还在用mybatis,写sql吗?
本文地址:http://www.xiupu.net/archives-11198.html
关注公众号:嗅谱网

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!