2017-03-01 15:48
谢谢波总上面的回复!
第一个问题:
通用的crud sqltemplate我写完之后发现,不是我想到的东西.因为抽象的太厉害之后所需要的数据都需要外界代码传递给模板函数.例如表名,需要返回的字段.查询条件,查询条件的逻辑操作符等等等等.这样子在代码调用的地方需要用map拼凑查询条件 ,感觉违背了管理sql的初衷,拼凑的时候代码冲还充斥了大量的表字段的字符串使用,并且并没有带来多少效率提升.而且jfinal自带的功能已经有了单表的增删改。查询的话我写的通用sql模板,肯定很局限.还不如直接写sql方便. 我现在疑惑的是,这个通用的crud到底该不该存在?
第二个问题(建议):
在我测试我写的通用的crud sqltemplate模板的时候,我发现代码中充斥了大量的字符串式的表字段引用(第一个问题也有提到),这显然很不利于维护。然后我就意识到不论我写不写通用的crud模板。字符串形式的字段使用这个问题都需要解决。我的想法是在生成的baseModel里面生成静态字符串常量形式的表名和字段名,其他代码操作的时候使用常量来带地手写字段名和表名。不知道简单的方法是否会被采纳?(代码我本地已经实现了)
第三个问题(建议):
既然可以给予模板的管理sql,我个人倾向于一个功能一个sql模板。所以希望把手动代码添加每个模板文件改成扫描指定包路径下的sql文件。(代码我本地已经实现了)
2017-02-27 11:53
我在使用template engine 管理sql时,中遇到了几个问题.
第一个:在sql模板中 所有的指令都是直接在当前scope(找不到的话会继续在parent scope中找)中 已key的形式查询保存的全局data map中是否存在数据. 文档里面出现了多次 可以直接循环data map的代码,但是我都没有使用成功,文档里面没有说明如何获得datamap 索引.
第二个:在通过输出执行#()输出的时候,我碰到的一个场景是:输出的key是我定义在外部java类中的静态常量,如果在输出执行中直接传入静态常量,会直接出书静态常量,而不是我期望的通过静态常量为key查询data map输出我想要的值.
上面带两个问题我都可以用一些手段解决,例如第一个问题我可以在代码传入的map中 map自身的索引页放入map中,第二个问题,我可以吧静态常量改成方法 应该就不会有问题.