关于JFinal Service层的问题

紫川云 发布于 2013/12/31 15:51
阅读 1K+
收藏 0

上个月新开一个项目,刚好发现JFinal这个框架,于是非常激动的用它做了。

今天遇到一个很奇怪的问题,希望各位前辈指点。

问题:controller调用对应service的一个方法,经DEBUG发现service有return 数据,但是到了controller变为空了。

以下是问题补充:

@紫川云:service具体处理是这样的:没查询到记录,调用存储过程插入数据,然后递归本身,继续查询。而controller接收的却是第一次查询的结果,也就是空,怀疑是事务的问题,各位大神 有什么办法解决呢? (2013/12/31 15:53)
加载中
0
菜根乱谭
菜根乱谭

发下代码看一下吧 

0
兰儿飞飞
兰儿飞飞
贴代码出来
0
紫川云
紫川云

Controller 方法如下:

public void get() {

        String month = getPara("month", null);
        String sort = getPara("sort", "FAddDate");//排序字段
        String order = getPara("order", "desc");//排序方式
        TransReportService transReportService = new TransReportService();
        JsonKit.setTimestampPattern("yyyy-MM-dd HH:mm");
        String json = JsonKit.toJson(transReportService.find(month, new Object[]{sort, order}));
        renderJson(json);

    }



service:

public List<TTransReport> find(String month, Object... paras) {
        List<TTransReport> list = null;
        if (StringUtils.isNotBlank(month)) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date start = null;
            try {
                start = sdf.parse(month + "-01");
            } catch (ParseException e) {
                e.printStackTrace();
            }
            String sort = (String) paras[0];
            String order = (String) paras[1];
            Calendar c = Calendar.getInstance();
            c.setTime(start);
            int startYear = c.get(Calendar.YEAR);
            int startMonth = c.get(Calendar.MONTH) + 1;
            String sql = "select * from TTransReport t where t.FYear = ? and t.FMonth = ? "
                    + "order by t." + sort + " " + order;
            
            list = TTransReport.dao.find(sql, new Object[] {
                    startYear, startMonth});
            if (list != null && list.size() == 0) {
                c.setTime(start);
                c.add(Calendar.MONTH, +1);
                Date end = c.getTime();
                this.save(start, end);
                this.find(month, paras);
            }
        }
        return list;
    }

0
紫川云
紫川云
里面调用的save 方法如下:
    public void save(Date start, Date end) {
        String sql = "exec trans_report ?, ?";
        Db.update(sql, new Object[] { new Timestamp(start.getTime()), new Timestamp(end.getTime()) });
    }
返回顶部
顶部