在base类new dao和在service层 new dao,有什么区别吗?
有没有涉及到单例模式的东西?是不是在service层new dao,可以确保是同一个事务?
波总在VIP群亲解决了:
base 类中的 new dao 不提但,因为你团队中的猪队友可以在 controller 中写业务代码:
public void index() {
Share.dao.find("select * from …);
…
}
将 dao 对象限定在 service 中,并且弄成 private 的,可以将业务,将数据库操作全部限定在 Service 层
否则,你的 sql 可以满天飞, 哪里都可以飞!这点也重要, 事务集中在业务层!否则你的事务也是不确定的!
model 中不要再出来 public xxx dao 这种东东
dao 这个对象,天然就不应该是 public 的
而且一定要有 dao() 调用, 限定为只能查询,不能存放数据
调用了 dao() 以后,你的 dao 对象,就只能查询,而不能 dao.set(…).save()
而且也可以防止由于自己懒惰, 不建业务层,让 dao 到处用
dao 只能在 service 中使用
养成良好的编码习惯,随着项目的进化,你会发现这其中的价值
这个可以在生成器中配置:
generator.setGenerateDaoInModel(false);