2019-06-28 13:14

上面只是说代码的问题, 再说你这个业务实现的问题, 应该用数据库的乐观锁吧?
https://www.jfinal.com/share/1616

2019-06-28 13:13

改成:
Db.update("update report set count =? where id = ?", integer.incrementAndGet(), getInt("id"));

原因:
update的参数虽然是OBJ类型, 但是不是什么对象都能放的, 只能是几个基础类型, JDBC对应的那几个.
控制台输出的参数, 你感觉没有问题, 是因为你 "XXX" + integer 这样的写法, 实际是被转成了 StringBuilder 拼接的, 而Object参数的拼接是 append(String.valueOf(obj)) 这样的写法 . 所以你看见的是对象的 toString() 输出形式!

2019-06-28 11:13

@MR.zhangzhiwei 文件记得是单独上传的, 分开提交. 我没直接传服务器, 都是传第三方OSS上的, 你查前端资料的时候, 不要加JFinal 关键字, 比如: VUE 文件上传

2019-06-27 22:06

Vue.js推荐使用 axios 来完成 ajax 请求 , 默认提交的请求头是Content-Type: application/json 所以需要设置一下:
import axios from 'axios';
import qs from 'qs';
var data = {name: 'James'};
var url = '';
axios.post(url, qs.stringify(data), {headers: {'Content-Type': 'application/x-www-form-urlencoded'}}
).then(result => {
//回调操作
})
https://www.runoob.com/vue2/vuejs-ajax.html

2019-06-27 17:44

https://gitee.com/-/ide/project/jfinal/jfinal/edit/master/-/src/main/java/com/jfinal/kit/Kv.java
语法糖, 如果直接用Map不会觉得很烦吗? Kv多简洁易用~节省大量的代码量, 太人性化了

2019-06-27 17:18

@白世伟 https://www.jfinal.com/doc/5-3
// 查询id值为25的User
User.dao.findById(25)

没有多个主键, 就不要加 s 就好了

2019-06-27 17:15

_MappingKit 就是自己创建的啊, (生成器创建的).
https://www.jfinal.com/doc/5-2
_MappingKit只是一个很普通的Java文件, 对arp.addMapping("user", User.class);等配置的一个抽取, 之所以单独写出来一个文件, 是因为如果数据库结构有变动的时候, 运行一下生成器_JFinalGenerator, 这个文件内容就会被覆盖掉了.

"没生成的时候这么写启动类,就找不到_MappingKit这个文件" , 这不对着嘛! 普通Java里面去调用一个没有的Java类,可不报错嘛. 如果是刚入Java开发, 用JF的话, 可以网上搜索一下 "小木学堂" 看看视频讲解很细致

2019-06-27 17:00

Find model by composite id values. >> 通过多主键进行查找
findByIds(Object... idValues) >> 配套 arp.addMapping("article", "article_id", Article.class);
https://www.jfinal.com/doc/5-2
比如上面的配置, 那么 使用时 findByIds(1, 2); 可以通过看它拼接成的SQL 就知道咋回事了.

findByIdLoadColumns的用法:
// 查询id值为25的user, 且仅仅取name与age两个字段的值
User user = User.dao.findByIdLoadColumns(25, "name, age");
https://www.jfinal.com/doc/5-3

2019-06-27 16:36

public static DataSource getDataSource() {
这行代码,你改了啊! 官网的例子是 : DruidPlugin druidPlugin = DemoConfig.createDruidPlugin();
你这是自己 new DruidPlugin的啊.
修改一下:
把 启动类 里面那个 new DruidPlugin 抽取为一个静态 方法 createDruidPlugin(), 模仿官网例子DemoConfig里面那个写法, _JFinalGenerator 里 修改一下 DemoConfig 改为你自己的 YouConfig.createDruidPlugin();

2019-06-27 10:01

上面文档地址打开后, 网页内搜索: MyWebSocket
端口修改搜索: undertow.port=
配置是活的, 随便组装使用, 比如: https://gitee.com/yun_final/JFinal-API/blob/master/src/main/resources/undertow.txt

2019-06-27 09:35

是的,可以 https://www.jfinal.com/doc/1-4

2019-06-26 14:37

自定义一个注解 BeforeVal, 然后在Interceptor 中去取值判断就好了,
比如: inv.getMethod().getAnnotation(BeforeVal.class)
@BeforeVal({"b", "c"})
@Before({BbbInter.class, CccInter.class})

2019-06-25 02:07

@jfinal4cyy 我觉得吧, 可以试试仿制一个Navicat ~ 并且是支持模版语法的 Navicat~

2019-06-24 15:09

你可以看下源码, getModel(Ab03.class); 里面其实就是 循环 set , 那么getModel和你在外面代码set其实就是一样的. 保存到数据库,可以看下 save 时生成的 SQL 是啥样的,就知道了

2019-06-24 09:57

一样的, 请求中发送多个主键字段