jfinal里面的Record如何获取值的

uknow8692 发布于 2014/07/14 17:25
阅读 4K+
收藏 0
@JFinal,你好,jfinal在通过Db.save()保存数据之后,然后又调用了record(primaryKey,getGeneratedKey(pst)),

这个方法得到的又是一个Record对象。请问下这个Record是如何得到的。我自己试了下,获取的是null。

List<Object> paras = new ArrayList<Object>();
StringBuilder sql = new StringBuilder();
DbKit.dialect.forDbSave(sql, paras, tableName, record);
		
PreparedStatement pst;
if (DbKit.dialect.isOracle())
  pst = conn.prepareStatement(sql.toString(), new String[]{primaryKey});
else
  pst = conn.prepareStatement(sql.toString(), Statement.RETURN_GENERATED_KEYS);
			
DbKit.dialect.fillStatement(pst, paras);
// for (int i=0, size=paras.size(); i<size; i++) {
// pst.setObject(i + 1, paras.get(i));
// }
int result = pst.executeUpdate();
// if (isSupportAutoIncrementKey)
   record.set(primaryKey, getGeneratedKey(pst));
   DbKit.closeQuietly(pst);
		
   return result >= 1;



private Map<String, Object> columns = DbKit.containerFactory.getColumnsMap();	// new HashMap<String, Object>();

public Record set(String column, Object value) {
   columns.put(column, value);
   return this;
}



加载中
0
JFinal
JFinal

    Record.set 方法,返回的是 this,所以得到的是其本身,它本身就是 Record对象,这样做的好处是便于 api 的链式调用,缩减代码量,如:

record.set(...).set(...).set(...);
model.set(...).set(...).save();

0
uknow8692
uknow8692

引用来自“JFinal”的评论

    Record.set 方法,返回的是 this,所以得到的是其本身,它本身就是 Record对象,这样做的好处是便于 api 的链式调用,缩减代码量,如:

record.set(...).set(...).set(...);
model.set(...).set(...).save();

原来record.set(primaryKey,value),这里的record对象就是我们通过Db.save("record",record);传过来的。原本传进来的record的所有属性和属性值都存在,只是id是自动生成的,所以之后会再设置自动生成的id。所以就能得到record对象和record对象里面的属性值了。
返回顶部
顶部