2018-03-08 11:07

@阿帕奇 1、服务层的设计本身就是单例无状态的;2、静态修饰对象在内存中始终保一份内存地址;何来的线程安全问题?

2018-01-30 18:29

@我要做菜鸟
1、其实如果你想这么去做是完全可以的,只需在代码生成器,设置下:gen.setGenerateDaoInModel(true),即可得到你想要结果。
2、至于为什么后来官方的club不推荐这么做的目的,就是防止如:Project.dao.findById()这类不好的使用习惯漫天飞,所引发问题的原因就是之前提到有"争议"的那个第5点问题信息量有关,在这不做解释了。

2018-01-25 19:27

@我要做菜鸟
1、建议你在提建议或反馈问题这点上,一定要给被建议人、问题回答人一看就明白你想表达的意思,不然就现在你所说的情况,一直在靠猜去解答你的问题或理解你的建议,是会有不同的见解与出入。
2、关于第5点你说这个太虚了是随着项目的演变也算是业界标准了,单靠我这里就一两句话说不出其中的奥妙的,因为涉及到的东西太广泛了,再进一步去拓展解析,呆会就觉得说得更虚了,因为每个人的认知理接触的面也不同,不太好去把握这个面,只能在实践中才能体会。

2018-01-25 16:03

@MEZHU 哈哈,解决了就好了。

2018-01-25 12:57

首先,感谢你的反馈,其次关于这个话题怎么说着呢,我就简单分析下:
1、为什么要实例化是为了确保线程安全,java是本身就一门多线程语言。
2、如果只考虑单数据库配置这块就有些片面了,因为现实项目中有一些项目是多数据源的,且也可能是不同库配置,所以在构建一个框架时,这些基本情景是必须要周全考虑的。
3、再说用new创建实例关于性能问题其实可以基本忽略不计,这的话题印象曾经在osc上看到其他的兄弟讨论过,波总也亲自在上解答过,蛮久的了你去你翻翻看。
4、club他实例的dao你追踪到底层你就会看到其实他是个静态实例对象,关于静态变量在初始实例么后,他从系统生命周期到结束在内存中始终保存一份。
5、为什么在每个service上都会实例自己需要的dao这么做的目的是便于代码重构,提供依据,家都知道当大型项目中随着时间、需要、人员更变,项目中的代码、功能模块变得异常的庞大时你就会发现,设计之初不做一些习惯上的改变,当后期代码进行重构是件非常痛苦的事情。

2018-01-25 11:41

@hbjh 这个你要确认下是否有值 ,应该的事情多着呢,所以不太好分析你在哪步出乱子了。

2018-01-25 11:34

这么使用事物,不是这样测试的,首先你在使用Db.tx这样的操作如:
Db.tx(nw IAtom(){
@Override
public void run() {
boolean flag = Amodel.add(aJson);
if (!flag){
return flag;
}
flag = Bmodel.add(bJson);
if (!flag) {
return flag;
}
return flag;
}
});是需要你去做手动失败判断,所以你在测试时参照我上面写的,你可以将其中一个如Amodel.add(aJson)提交保存异常,就看么效果了

2018-01-25 11:32

你把El表达式的jar包引入。http://mvnrepository.com/artifact/javax.el

2018-01-25 11:14

这个一样用就好了,在这举个例子给你,如级联查询:
Test test = Test.dao.findFirst("select a.id, b.name from tb_a a left join tb_b on b.id = a.bid limi 1");
Integer id = test.getId();
String name = test.get("name");就好了。

2018-01-25 11:05

@hbjh 那你贴出来瞧瞧

2018-01-24 18:57

@JFinal 猜对有奖不?波总,哈哈!!

2018-01-24 18:55

@JFinal 上面显示是JFinal3.2的呢,看数据分析我猜是用sql server数据库。哈哈

2018-01-24 18:09

是不是执行反回数据是空的呢?呵呵

2018-01-24 18:04

这个建议你断点调试进去看下,是否有哪个参数为空造成的。

2018-01-24 18:02

是否可以把你的业务代码与sql贴出来看下。