2020-03-23 11:06
@Code_Cat 上面的 dataType 是指返回值类型,不是你提交的类理,提交的仍然是 key value 形式的表单域
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-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 过来的数据,对不同的数据类型进行处理
2020-03-20 15:08
@yunqi  扩展一下 :
 com.jfinal.plugin.activerecord.ModelBuilder.java
当前 oracle 用的是对于上述 ModelBuilder 的扩展:
TimestampProcessedModelBuilder.java 
TimestampProcessedRecordBuilder.java
通过查看 OracleDialect.java 可以知道是如何用起来的
具体办法如下:
1:继承 TimestampProcessedModelBuilder、TimestampProcessedRecordBuilder 这两个类,分别创建 MyModelBuilder、MyRecordBuilder
2:覆盖父类的 build(...) 方法,在里头添加 if 判断,处理一下 oracle 返回的 BigDeciaml 类型
3:在做的时候需要在 build 方法中添加断点,看看 BigDecimal 类型出来的时候,if 判断中的类型应该与 Types 中的那个能对应上