2023-01-30 22:07

前端的东东不太熟,我们公司用 element ui 做的文件上传直接指定了 action 就行了:

《el-upload
:action="actionUrl"
:headers="headers"
:class="form.businessLicenseFile ? 'hide':''"
list-type="picture-card"
:on-preview="handlePictureCardPreview"
:on-success="handleSuccess"
:on-remove="handleRemove"
accept="image/jpg,image/jpeg,image/png"
:before-upload="beforeUpload"
:file-list="businessLicenseList"

注意看上面的 :action="actionUrl"

其中的 actionUrl 数据如下:
export default {
data() {
return {
actionUrl: process.env.VUE_APP_BASE_API + '/system/upload?type=customer',
....
}
}
}

2023-01-08 16:32

目前,建议做一个 DbExt.java 来扩展出这个功能, 底层依赖一下 Db、Model 中提供的功能

2022-12-10 21:00

@北流家园网 事务不能跨越数据源,如果要跨,建议使用 sharding jdbc 这类第三方中间件

2022-12-10 19:39

我的项目有很多是多数据源的,都是这么来玩的

2022-12-10 19:39

将 Generator.java 复制成多份,每一份对应一个数据源,并配置每一份生成的 MapingKit.java 的文件名,例如:
GenDs1 生成 MappingKitDs1
GenDs2 生成 MappingKitDs2
GenDsn 生成 MappingKitDsn

最后配置的时候:
MappingKitDs1.mapping(arp);
MappingKitDs2.mapping(arp);
MappingKitDsn.mapping(arp);

2022-12-08 21:33

@zzutligang After 后面配置一下 mysql

2022-12-04 16:06

json 字符串转成 map 、list 都很方便,后端用 getRawData() 接收

2022-12-04 16:06

发请求之前先将数据转成 json,然后发到后端再转成对象,不用折腾那些麻烦的,前端用一下: JSON.stringify(...)

前后交互传 json 是大势所趋,非常方便

2022-12-04 13:49

多数据源事务属于分布式事务,jfinal 没有提供支持

你要实现分布式事务,最好是借助第三方中间件,专业的事情交给专业的人,用一用 Sharding JDBC 这类中间件,基本上只需要配置,对于应用来说是透明的

要保障分布式事务的原子性、一致性,不是一般人想象的那样简单,性能代价也比较大

一般可以在业务层想办法解决,例如两个数据源的事务分别提交,前面的事务提交后在数据库留下某种状态信息,根据状态再决定是否决定执行第二个事务,再根据第二个事务的成功与否再决定第一个事务的状态是否要回到原状态(需要业务代码)

上面的方式比较麻烦,还有一个简单办法是,在设计层面将两个事务拆分成两个状态,让其成为业务的流程的两个环节,根据状态可决定下一步可以做什么事情

有关业务流程的表中通常要放一个 state 状态字段

2022-12-01 21:16

还有很多办法,方法一:
通过 JsonRender.gAttrs()、getJsonText() 获取必要数据,参考 JsonRender.buildJsonText() 中的代码去生成 json 来使用,这个会额外消耗性能

方法二:
继承 JsonRender 做一个 MyJsonRender,覆盖其中 buildJsonText() 方法,将方法声明中的 protected 改为 public:
public void buildJsonText() {
super.buildJsonText();
}
然后在拦截器中大致这么用:
if (render instanceof MyJsonRender) {
MyJsonRender mjr = (MyJsonRender)render;
if (getJsonText() == null) {
mjr.builderJsonText();
String json = getJsonText();
}
}

以上的 json 对象就得到了最终的 jsonText() 并且还不影响性能

方法二扩展的 MyJsonRender 可以放在 BaseController 中,通过覆盖父类的 renderJson 来实现,也可以更彻底通过扩展 RenderFactory 来实现切换,具体看下文档或者源代码

2022-12-01 18:21

@杜福忠 这个办法比较有新意,以前没发现有人这么玩过

2022-11-30 19:58

如果存在循环依赖调用,会有异常,一般不建议这么来用,而是让 model 仅作为承载数据的 bean

如果一定要这么来用,可以在查询代码之前,先判断一下数据是否已经存在,存在直接返回就不要再查询了

2022-11-26 17:22

这个没关系,因为无论如何,对于复合主键,你也得再次指定一次,否则这个有可能是不确定的,在 configPlugin 中的
_MappingKit.mapping(arp);
这行代码后面再多添加一行代码:
arp.setPrimaryKey("coin_watcher_log", "coin_name, coin_chain");

用了上面的方式,无论 MappingKit 中生成的代码是什么次序,最终以你自己的代码为准

jfinal 的 MappingKit 中生成的次序完全是根据反射得到的,其次序没有干预过

2022-11-24 12:14

还没试过,或许是支持的。 就算不支持,稍微改改源码也能支持,源码很少,涉及到 ssl 的地方就更少,改起来非常方便