2018-10-12 09:45
@lyq027 一次映射,到处适用,用起来很方便,而且避免了在 @Inject 注解参数中写死,便于将来切换实现
2018-10-12 09:22
如果 @Inject 用在接口上,下面两种方法选择其一:
1:在 @Inject 中指定被注入的实现类
@Inject(ServiceImpl.class)
Service service;
2: 事先映射好接口与实现类的关系
public void configConstant(Constants me) {
Aop.addMapping(Service.class, ServiceImpl.class);
}
然后用的时候可以像以往一样了:
@Inject
Service service;
此外,Aop.addMapping(Class, String) 第二个参数还可以是 String,那么你就可以通过外部配置文件来做映射了,例如外部配置文件中是下面这样:
Service=ServiceImpl.class
映射的时候可以这样:
Aop.addMapping(Service.class, PropKit.get("Service"));
上面的配置方法,可以通过修改配置文件来改变 Service 的实现类
2018-10-12 09:06
@Mr.moster jfinal 在底层就是将你的 sql + para 直接扔给 JDBC 处理的,所以只要是 JDBC 支持那 jfinal 一定就支持了
因此,用纯 JDBC 做个测试就知道原因了,具体办法是:
// 通过 jfinal 的工具类拿到 JDBC 的数据库连接
Connection conn = DbKit.getConfig().getConnection();
// 用纯 JDBC 的方法执行你自己的 sql
conn. prepareStatement(sql);
pstmt. executeQuery();
以上的 sql 参数是你的代码出异常时的那个 sql,将其复制进来即可,可能需要单步调试才能得到这个 sql
通过上面的方式你会发现,JDBC 本身不支持这条 sql,解决办法自然就出来了
2018-10-11 10:53
@黑猫惊涨 由于 jfinal 3.5 支持了 action 带参功能,也就是说以前你在 BaseControlelr 中的那些带参的方法在 jfinal 3.4 的时候不是 action ,但到了 3.5 变成了 action
所以可能会出现 actionKey 冲突,因为多出来了一些 BaseController 中的 actionkey,这个正是 @NotAction 的应用场景,加上 @NotAction 极其正确的做法
2018-10-11 10:51
@从头再来 这就奇怪了,我估计是你的某个 jar 包中存在 ehcache.xml , jar 包中的也是可以读到的