保存问题更严重,取出来用sql映射已经可以很好地解决了,基本上一个函数、一群SQL,加上少少的XML就可以表达清楚了,但是这不能解决保存对象的问题。
假想中的保存API。
public void saveObject(Connection conn, Object obj,String xml); //保存单个对象,简单地将对象扩展成sql,允许xml映射,也可以不映射
public void saveObjects(Connection conn, List objs, String xml); //将对象树保存到数据库
上一篇取出的List或人工组合的List可以用saveObjects来保存,这个函数的任务就比较重了,因为没有状态,所以要判断修改过非常麻烦。
一种思路是在对象是增加属性,然后由开发者维护,比如界面上是否修改很有可能是有状态位的,这个状态位就可以用起来,然后函数根据这个状态位来判断是否去更新。
一种思路是从Class本身中就得知对象是否被改过,类似AOP,在修改的时候记录一下,然后函数来判断是否改过,然后组成SQL来更新。
至于批量修改是强项,直接用SQL即可,学习SQL比HQL的成本要低,毕竟这么多年了。
外围实用函数的思考:基本上都针对SQL的生成,或数据库函数的替换
public String generateInsertSQL(DBType type,Object obj);//生成insert语句
public String generateUpdateSQL(DBType type,Object obj);//生成update语句
public String generateSelectSQL(DBType type,Object obj);//生成select语句
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/