2020-05-23 16:53

@JFinal 有个问题,如果用Db调用,Db那里的Db.template方法。其中参数若是没有继承model的实体对象参数,那要怎么弄?我看了一下Db的方法,只有map和可变参数的object数组等形式参数,实体对象反射转成map?,除了这个还有其他方面么。

2020-05-23 13:45

@JFinal enjoy模板引擎和ActiveRecord,能用于没有继承model的实体类渲染么?就是带传统的setget的实体,但算先替换持久层框架,但持久层和实体类绑定了,不可能一下替换,所以的话目前是先保留实体,先替换一些持久层访问方法

2020-05-20 14:57

@tctc4869 me.add(controllerKey, controllerClass),如果添加两个相同的url字符串,会报错

2020-05-20 14:54

@JFinal ActionKey注解不能写在类上啊,我这里指不是action的uri,是Controller本身的url

2020-05-08 12:56

@JFinal “不该自己处理”是什么设置?要在Jifnal那里设置一个Handler?这个里面写什么代码么?

2020-04-08 09:58

@zhangtianxiao

Record user = new Record().set(TestEntity.Pc_Name, "James").set(TestEntity.Pc_Age,18)
.set(TestEntity.Pc_Id, 3)
.set(TestEntity.Pc_TestType, new TestChild("1","3"))
.set(TestEntity.Pc_T_time, LocalTime.now());
Db.update("ttest", user);

public class MyPostgreSqlDialect extends PostgreSqlDialect {

@Override
public void fillStatement(PreparedStatement pst, List paras) throws SQLException {

System.out.println("777");

fillStatementHandleDateType(pst, paras);
}

@Override
public void fillStatement(PreparedStatement pst, Object... paras) throws SQLException {

System.out.println(12346);
for(Object i :paras) {
if(i.getClass()==TestChild.class) {
TestChild tc=(TestChild) i;
i=tc.getNum_id()+tc.getUu_id();
}
}

fillStatementHandleDateType(pst, paras);
}
}


Exception in thread "main" com.jfinal.plugin.activerecord.ActiveRecordException: org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of com.xxx.module.test.TestChild. Use setObject() with an explicit Types value to specify the type to use.
at com.jfinal.plugin.activerecord.DbPro.update(DbPro.java:698)
at com.jfinal.plugin.activerecord.DbPro.update(DbPro.java:713)
at com.jfinal.plugin.activerecord.Db.update(Db.java:506)
at myJfinalUndertow.RecordTest.main(RecordTest.java:38)
Caused by: org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of com.tc.module.test.TestChild. Use setObject() with an explicit Types value to specify the type to use.
at org.postgresql.jdbc.PgPreparedStatement.setObject(PgPreparedStatement.java:978)
at com.alibaba.druid.pool.DruidPooledPreparedStatement.setObject(DruidPooledPreparedStatement.java:480)
at com.jfinal.plugin.activerecord.dialect.Dialect.fillStatementHandleDateType(Dialect.java:312)
at common.persistence.typehandler.MyPostgreSqlDialect.fillStatement(MyPostgreSqlDialect.java:31)
at com.jfinal.plugin.activerecord.DbPro.update(DbPro.java:277)
at com.jfinal.plugin.activerecord.DbPro.update(DbPro.java:678)
at com.jfinal.plugin.activerecord.DbPro.update(DbPro.java:696)
... 3 more

刚刚测试了一下,将实体类型的数据用于Set,进行update测试,但无法到达fillStatement这里,在之前抛出了异常

2020-04-08 09:47

@zhangtianxiao 那调用fillStatement这个方法的方法又在哪个类?因为也想要根据继承Model的类的class配上内部注解来实现自动转换

2020-04-07 19:33

@zhangtianxiao 我准确的说明,是调用jdbc之前的过程,持久化框架是能干这件事的,不就有一个例子么,mybatis它就是啊,这个框架提供了typeHandler抽象类,让开发者在jdbc访问数据库之前,实现自己自定义类型转换处理。那持久层框架应该是能干的。

2020-04-07 17:22

@JFinal 那这种情况我该怎么办,我写了一个实体A,专门处理特殊的数据,实体A数据更新到数据库里的方式就是转成字符串存到varchar里。在jdbc调用更新写入之前,将实体A其转成t特殊格式的字符串存到varchar里。不能自动调用的话,
那每次编写Set方法处理特殊数据的实体,都要调用手动写转换方法啊

2020-04-07 16:33

数据插入,更新,删除,用的是哪个类哪个方法?