2020-03-23 11:09

@时光飞逝TL 这个是由 http 协议决定的,协议中规定对于 multipart request 请求,其中的数据格式是特定规则的,所以需要调用 getFile() 去解析这个规则下的数据

2020-03-23 11:08

@时光飞逝TL 关键看请求类型,如果是 multipart request 类型,就需要先 getFile() 这个是 http 协议决定的

2020-03-23 11:07

@小白菜111 2.5 已经发布到 maven 中心库有一段时间了,可以使用

2020-03-23 11:06

@Code_Cat 上面的 dataType 是指返回值类型,不是你提交的类理,提交的仍然是 key value 形式的表单域

2020-03-22 23:32

在 spring 场景下使用 jfinal 的 ActiveRecordPlugin 是很爽的事情,比 hibernate、 mybatis 简洁方便得多

2020-03-22 23:31

通过你的回复可以得知你对代码的调试还不熟练, 调试代码是开发的最基本技能,这个技能甚至与你掌握 java 语法同等重要

2020-03-22 23:29

@yunqi query 方法确实没有进入 builder

但是扩展 query 方法更简单,大致步骤如下:
1: 创建一个 MyDbPro.java 继承 DbPro,并覆盖其中的 query 方法,改掉里面的获取方式,学习一下前面我回复中的 Builder 中的 if 判断

public class MyDbPro extends DbPro {
public MyDbPro(String configName) {
super(configName);
}

protected List query(Config config, Connection conn, String sql, Object... paras) throws SQLException {
改写这个方法内部的实现
}
}

2:在 configPlubin 中通过如下配置,用下自己的这个 MyDbPro
ActiveRecordPlugin arp = new ActiveRecordPlugin(...);
arp.setDbProFactory(configName -> new MyDbPro(configName));
me.add(arp);

2020-03-22 23:19

前端搞出乱码的问题必然与 jfinal 无关,因为 jfinal 是后端框架,无法干预你在前端搞出来的事情

2020-03-22 23:19

data 中的数据应该是 json ,而不是拼成一长串的字符串,并且你的数据类型也没有指定为 json :
$.ajax(url, {
type: "POST"
, dataType: "json"
, data: {
processInstanceIds: ...,
deleteReason: ...
}
});

2020-03-22 23:16

小程序功能已经加了,你仔细看一下

2020-03-22 23:15

目前你在业务层的用法,完全可以改成:
public Site findById(Object id) {
return dao.findFristByCache("site", id, "select * from site where id = ? ", id);
}

虽然代码比你建议的 findByIdByCache 稍多,但比你目前的用法能省很多代码

2020-03-22 23:13

很早就想添加一个这种方法,但名字不好取

findByIdByCache 这个名字不太好

其次,有 findFristByCache 可以在一定程度上代替这个方法的功能。稍微多一点点代码

如果你有更好的名字,可以提给我,可以添加进去

2020-03-21 16:18

Db.update("update tablename set remainamount = ? where id = ?", newnumber , id);

2020-03-20 15:12

补充一点,在覆盖父类的 build 方法时, if 判断之下,你可以选择该返回什么类型的值:
1:如果想返回 Integer , 使用:value = rs.getInteger(i);
2:如果想返回 Long , 使用:value = rs.getLong(i);

我相信 Integer 与 Long 正是你想要的类型

Oracle 下的 BigDecimal 问题本质上是 JDBC 返回的就是这种类型,而 jfinal 并未干预过

2020-03-20 15:10

最后在使用的时候这么来用:
ActiveRecordPlugin arp = new ActiveRecordPlugin(...);

Dialect dialect = new OracleDialect();
dialect.setModelBuilder(new MyModelBuilder());
dialect.setRecordBuilder(new MyRecordBuilder());

arp.setDialect(dialect);
me.add(arp);

简单来说就是换掉 OracleDialect 中的两个 Builder,换成你自己的

这种扩展方式就是在精确控制从 JDBC 过来的数据,对不同的数据类型进行处理