2017-08-13 14:07
@yjjdick1990 save 看你是想实现什么,Db.save(...) 支持 Record 对象保存,如果你希望支持 String sql, Object... para 这样的参数,用一下 Db.update(sqlPara) 即可
2017-08-13 14:05
batch 方法本质上是为某一条 sql 准备 n 多条数据,然后一次性发给数据库,注意观察一下 batch 方法中的 PreparedStatement 这个对象的操作过程:
1:获取 pst = conn.prepareStatement(sql); 这里意味着只有一条 sql
2:pst.setXxx(...) 注入字段数据
3:pst.addBatch() 将数据添加为 batch
4:pst.executeBatch(); 批量提交到数据库
简单说,batch 批量操作核心在于一条 sql ,多条数据,而这多条数据是重用了这一条 sql
另一种 batch 模式,注意看一下 DbPro 中带有 List sqlList参数的那个 batch 方法,是多条 sql, st.addBatch(sql); 但是这个不支持多条数据
如果你希望是多条 sql + 数据 的组合 batch 操作,估计无法实现,否则我当时应该会添加这个方法
希望你能发现 jdbc 有这个支持,搞定后记得反馈给我
2017-08-13 13:58
@yjjdick1990 通常来说,create table 这个建表的 sql 里面的字段的次序与反射出来的字段次序是有关系的,但或许不同的数据库版本以及 jdbc 驱动版本行为上有差别,建议对于多主键,添加一行强制指定的配置
无论什么原因引起的并不重要,重要的是要有应对机制。反射次序我们无法控制,手动指定才是我个可以干预的手段
2017-08-12 23:22
@地狱里的帅灵魂 _MappingKit 是生成器自己生成的,不用自己手写,生成器在 jfinal demo 里面有,运行一下里面的 main 方法就生成了 _MappingKit
2017-08-12 11:34
扩展一下,先创建一个 MyParaDirective:
public class MyParaDirective extends ParaDirective
在 MyParaDirective 中覆写一下 exec(...) 方法,将原来的 ParaDirective.exec(...) 方法中的代码全 copy过来,改掉下面这一行代码:
sqlPara.addPara(exprList.eval(scope));
上面代码改成:
Object value = exprList.eval(scope);
if (value != null) {
sqlPara.addPara((value);
}
最后配置一下就可以了:
1:arp.getEngine().removeDirective("para") 先移除老的 para 指令
2:arp.getEngine().addDirective("para", new MyParaDirective()) 再添加自己扩展后的指令
sql 管理功能中的三个指令本身也全是扩展而来的,大家可以用类似的办法自由定制自己需要的指令
记得搞后来回来分享一下