查看原文
其他

MyBatis 增强工具 pndao - 帮你自动写 SQL

2016-11-01 黄亿华 开源中国

#长按上图识别二维码,参与OSC源创会年终盛典#


摘要: pndao是我们团队在使用的MyBatis增强工具,它可以根据一些方法约定,自动生成SQL。它在实际生产中减少了80%以上的重复SQL编写工作。

pndao是我们团队在使用的MyBatis增强工具,它可以根据一些方法约定,自动生成SQL。它在实际生产中减少了80%以上的重复SQL编写工作。


起因


作为Java后端开发,写DAO是个日常的不能再日常的工作。

这方面有很多工具,有重量级的Hibernate,轻量级的DbUtils、Spring JDBC等。其中MyBatis以接口声明来生成DAO,实现了接口与实现分离,并约定POJO来作为实体类,同时提供一些便捷的脚本扩展,是一套规范性和灵活性并存的方案,已经成为很多团队的首选。我用过很久MyBatis(iBatis),其实它从最开始到现在已经有不小的进步,但是仍然会被大量的复制字段、SQL拼写错误、记不得一些繁琐的语法困扰。

相信很多人都基于MyBatis写过daogen,大多数都是一次性生成DAO以及SQL。不过维护成本依然比较高,每次增减字段都需要手动改。

有一些新的框架,例如jFinal,其实已经集成了常用SQL生成这样的功能,但是一般会绑定自己的框架,使用成本比较高,迁移也很困难。

目前使用的这个版本的daogen支持MyBatis,并且能生成常用SQL,并且每次编译都会重新生成SQL,不仅省去一次性编码,也解决了维护的问题。经过一年的使用,基本上常用功能都已经能够覆盖。都是吃自己狗粮出来的,专为解决问题而生,没有半点花架子。


原理


pndao的原理并不复杂,是基于MyBatis的方法命名约定来生成SQL,并且写入MyBatis需要的XML。

写之前会判断是否已经存在XML或者注解,如果已经存在则略过此方法,所以无论是注解还是XML方式配置SQL都是兼容的。

有一点不同的是,这个是基于jsr269的编译期注解处理来实现的,所以其实整个方案跟MyBatis并没有强绑定,基于这种思路还可以做出其他很多有用的东西来。

以下是一个常见的DAO功能:


基于pndao,所有需要开发的DAO只有这些:


结合建表语句生成插件,大部分场景只需编写一个模型类即可完成DAO层工作。


END


推荐阅读

点击标题直接进入阅读

DB-Engines 发布 10 月份全球数据库排名,三甲内硝烟四起

2016 年 10 月排行榜中排名前三的是:Oracle,MySQL 和 Microsoft SQL Server。

 《关于React Native,您想知道的都在这里了

现在使用 React Native 开发能给开发者带去哪些便利,又会遇到哪些坑呢,又该在什么场景选择 React Native 呢?

广州源创会干货已备好,小程序现场 live coding 教学压轴

年末之际OSC源创会将来到广州,与各位OSCer在秋末相约,我们一如既往秉承着“自由、开放、分享”的思想,为大家献上满满的干货主题~

点击“阅读原文”查看更多精彩内容

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存