2018-08-28 14:21

@vk567 有眼光

2018-08-28 11:46

直接写关联的 sql 就好:
select a.* from a inner join b on a.bid = b.id

三张表就 join 两次,看一下 jfinal 文档,其中有关于关联表查询以及数据输出的例子

2018-08-28 11:35

@七彩 看到你的数据库和代码中使用了 ymx ks 这样的名字,这类代码可维护性很低

不要用拼音,更不能用拼音缩写,一定要用有意义的英文单词

2018-08-28 11:34

@CrazyZH 简单说就是要让 PathKit.getRootClassPath() 输出的目录确实是指向了你的 sql 文件输出的目录,你的 sql 文件会被自动编译到 classes 目录下面,这个目录下面还有其它的被编译成 .class 的文件

2018-08-28 11:21

PathKit.getRootClassPath()打印出来是:E:\workspaces\waiter\file:\E:\workspaces\waiter\src\main\webapp\WEB-INF\lib\alipay-sdk-java20180309170622.jar!

错误就是这里了,正常情况是项目的 webapp/WEB-INF/classes 下面,如果是 maven 项目则是 target/classes 下面

应该是你的项目配置有问题,解决办法有两个:
1:如果是 maven 项目,则保留 src 目录以及 pom.xml 文件,删掉所有的东西,重新当成 maven 项目导入一次,让 eclipse 重新帮你生成那些额外的配置文件

2:如果不是 maven 项目,按照文档来配置一下 Default output folder 目录即可

2018-08-28 11:00

@jianghe727 这个是因为你前面的 acc.save() 与 后面的 Db.update 处在一个事务之中,事务未提交所以 acc.save() 还并未真正在数据库里面创建记录,所以后面的 Db.update 找不到 ids 参数,所以就不会生效了

解决办法是不要将 acc.save 与 Db.update 放在同一个事务中,具体做法是使用 Db.tx(...) 这种手动的方式对 acc.save() 部分做事务

然后 Db.update 另起一个事务

这个问题本质是因为 Db.update 中使用的 where 条件对于同一个事务中前面的 acc.save() 有依赖,并不是在 jfinal 中才会碰到的问题,使用任何一个 ORM 框架都会碰到这个问题

2018-08-27 23:21

有办法解决,今天太晚了,只简单说一下:
1: number 字段映射问题可以通过继承 MetaBuilder ,对于 BigDecimal 类型生成 Integer 或者 Long 类型。 MetaBuilder 中所有方法都是可以覆盖并定制的。具体到 oracle 的 number 类型,还可以得到其精度,选择生成 Integer、Long、BigDecimal

2:oralce 的字段一定要用下划线分隔,否则生成器生成 getter、setter 方法时就不好处理,因为生成器是无法知道你的多个单词的分界点的,除非先准备一个分词文件,然后利用分词器进行单词的分割,做到是可以做到,就是麻烦

CaseInsensitiveContainerFactory 这个不建议使用,如果要用也不建议传入 true/false构造方法的参数,让构造方法参数留空

3:date 格式这个,只要配置好 datePatter 就可以了,me.setJsonDatePattern(...)。 建议使用 jfinal 3.4版本,因为老版本的这个配置对于 JFinalJson 实现无效

2018-08-27 21:56

已分割完一个,为啥不会分割第二个呢? 代码都是一样的:
#set( ymxArray = x.yxm.split(",") )
#set( ksArray = x.ks.split(",") )

#for (int i=0; i < ymxArray.length; i++)
#(ymxArray[i])
#(ksArray[i])
#end

跟写 java 代码几乎没有区别

2018-08-27 21:53

代码缺失,注意在编辑时,可以点击文本编译器上的代码下拉按钮,可以直接写代码,不会丢失

在这里可以继续编辑该文章:
http://www.jfinal.com/my/feedback

注意点击右侧的编辑链接

2018-08-27 21:51

@derekchuncheng jfinal 是绝对不可能创建一个文件的,用排除法可以得知是其它代码创建了文件

2018-08-27 21:50

还想到一个办法,既然你这里是 javascript ,那么还可以用字符串相加来解决:
elem: '#' + 'end';

总之,解决的办法实在太多

2018-08-27 21:49

最好的办法是改一下名,不要使用 #end,例如:
elem: '#otherName'

2018-08-27 21:49

@猴子的花果山 原样输出指令可以一次性跨多行来解决,例如:

#[[
laydate.render({
elem: '#end' //指定元素 //这是第113行
});
#]]

可以像上面这样将大块的 js 代码原样输出一下,对于某些 layiu 中的指令如果有冲突,还可以通过换行解决,例如:
{{ #
if(...)
}}

上面的 layui 代码,其中的字符 '#' 与 "if" 不在同一行,enjoy 模板引擎也会将其当成纯文本,不进行解析

2018-08-27 21:47

@猴子的花果山 是冲突了,有很多办法解决,例如使用“原样输出” 指令就可以,看一下文档:
http://www.jfinal.com/doc/6-6

或者将 elem 指向的元素改一下名,不要使用 #end

又或者使用 jfinal 的输出指令当成字符串参数输出一下,例如:
elem: #("'#end'")

2018-08-27 21:45

下载首页的 jfinal demo ,直接导入到 IDEA 中,然后运行起来试一下

观察一下 jfinal demo 的结构,慢慢就会了