波总,跟您请教个问题代码如下^_^//:
1、服务层代码:
 /**
  * 保存
  * @param log
  * @return
  */
 public boolean save(SLog log) {
   if (null == log) {
      log = new SLog();
   }
   
   if (dao.put(log).save()) {
if (!sl.isEmpty(log.getId())) {
   CacheKit.remove(SLog.CacheName.NAME, log.getId());
} else {
   CacheKit.remove(SLog.CacheName.NAME, SLog.CacheKey.KEY);
}
      return true;
   }
   
   return false;
 }2、控制层代码:
if (1 == fn) {
    Resource resource = matchRecordLogUrl(request);
    if (null != resource) {
        SLog sLog = new SLog();
        int uid = controller.getCookieToInt(Const.Co._USER, 1);
        String username = "游客";
        if (!sl.isEmpty(uid)) {
            username = UserService.me.findById(uid).getName();
        }
        sLog.setUsername(username);
        sLog.setName(resource.getName());
        sLog.setUrl(resource.getUrl());
        sLog.setType(1);
        sLog.setIp(request.getRemoteAddr());
        sLog.setInfo("成功!");
        sLog.setStatus(fn);
        sLog.setCreateAt(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        LogService.me.save(sLog);
    }
}备注:
(1)、数据库是mysql库,数据库主键已经设置自动增长,数据保存时主键不自增问题。
(2)、参数传递是javabean模式,也就是说在做参数传递时,传的是javabean 的 getxx或setxx的这种形式。
 项目:JFinal
 
 
 
 
 
 
 
 
dao 是 static 声明的全局共享的东西,不同线程在使用它的时候,数据是共享的,那么你第一次 dao.put 进去东西,第二再使用的时候与第一次会混乱,如果是多线程并发使用,数据是乱窜
所以 jfinal 最佳实践已经明确明说了,要将 Model 中的 dao 彻底删掉,避免这样的误用
删掉以后,查询的时候可以 new Xxx().find(sql) 这样就永远没有线程安全问题了