05:持久化框架需求

人盡茶涼 提交于 2020-01-30 02:04:41

在工作中很多时候,开发工作都是一个人完成的。用过Hibernate、MyBatis,但是个人更倾向于JFinal DB,非常简洁、方便,对小规模团队更加友好。

其实在更早的时候,使用山东一家商用平台,也有类似的持久化功能。一是具有Record的类,可以作为任何SQL执行后的结果集,有点像ResultSet,但可以直接getString,而且其Dao层query的值,都是直接返回List<Record>,过了3年遇到了JFinal,当时版本还是2.2,也有这个功能。

为了移植,首先观摩JFinal的Record思路。

这里有两个重点,一个是getStr方法,一个是getColumns方法。

getStr很好理解,从getColumns这个Map中获取某个特定名称的值。

getColumns,只是获取的一个dataMap的值。这二者具体的数值,都是在Db这个类下面进行SQL操作的时候赋予的。

那么Record移植就简单了,首先应当持有一个dataMap,其次有一个getStr方法。至于Db怎么操作dataMap,则是Db的重点。

Db需要移植的方法有find和update(或者称execute),find可以直接传入一个SQL,返回List<Record>,update则可以执行一条SQL语句。衍生出dialect,用于兼容不同数据库的差别(需要多态支持)。

在JFinal DB中,执行find方法,首先是通过rs.getMetaData()获取了返回数据里所有的列信息,然后遍历ResultSet,将value依次放入Record的map里去,在每一次循环结束后将record放入List里,作为最终返回。

当然JFinal里还处理了很多细节,我这里暂时通通不考虑。

至于update,就更简单了,就是使用了PreparedStatement的executeUpdate。

剩下来的工作,就是写代码了。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!