2018-07-23 17:15
@飞.飞 @netwild 现在你可以在你自己的 BaseController 添加一点点代码来实现:
private String rawData;
/**
* 获取 http 请求 body 中的原始数据,通常用于接收 json String 这类数据
* 可多次调用此方法,避免掉了 HttpKit.readData(...) 方式获取该数据时多次调用
* 引发的异常
* @return http 请求 body 中的原始数据
*/
public String getRawData() {
if (rawData == null) {
rawData = com.jfinal.kit.HttpKit.readData(request);
}
return rawData;
}
public T getRawDataTo(Class targetClass) {
Json json = Json.getJson();
if (json instanceof com.jfinal.json.JFinalJson) {
return (T)FastJson.getJson().parse(getRawData(), targetClass);
} else {
return (T)json.parse(getRawData(), targetClass);
}
}
public Kv getRawDataToKv() {
return getRawDataTo(Kv.class);
}
2018-07-23 17:13
参考一下文档中 sql 管理模块的高级用法:
http://www.jfinal.com/doc/5-13
参数可以放在 Map 中,map 的 key 可以带有大于、小于、等于这类比较符号,例如:
#sql("find")
select * from girl
#for(x : cond)
#(for.first ? "where": "and") #(x.key) #para(x.value)
#end
#end
用的时候这样传参:
Kv cond = Kv.by("age > ", 16).set("sex = ", "female");
SqlPara sp = Db.getSqlPara("find", Kv.by("cond", cond));
Db.find(sp);
然后再在 sql 中利用 #for 指令配全 if 判断就可以实现复杂的功能了
最后,你还可以利用 #define 定义一些常用的功能,例如组装 id in (?, ?, ? ....) 这类语句的 #define idIn(idList)
2018-07-20 18:06
@老王XXXXX jfinal 的所有数据库操作 API ,最终会落实到 JDBC 去执一 sql + para
只要 JDBC 支持,那 jfinal 就会支持