在工作中很多时候,开发工作都是一个人完成的。用过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。
剩下来的工作,就是写代码了。
来源:CSDN
作者:nietzsche0
链接:https://blog.csdn.net/nietzsche0/article/details/104106803