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 就会支持
2018-07-20 18:00
@kongkong 不用改源码,因为 ActionHandler 是可以切换成自己的,在 configHandler(Handlers me) 这个配置方法在配置一下:
me.setActionHandler(new MyActionHandler());
上面的代码将 jfinal 的默认 ActionHandler 切换成了你自己的 MyActionHandler,从而可以通过扩展而非修改源码的方式解决
2018-07-20 17:57
@小喇叭 不需要单独配置,在首页下载 jfinal demo,直接用上里面的 log4j.properties