NutzCN Logo
问答 如何取到自定义sql中函数的结果?
发布于 209天前 作者 LovelyIsJustice 399 次浏览 复制 上一个帖子 下一个帖子
标签:

自定义SQL是

SELECT bas_departures.ORGCHN,	bas_departures.DESCHN,count(bas_departures.DESCHN) count FROM 	bas_departures  WHERE bas_departures.ORGCHN='昆明' AND bas_departures.SDT='2017-03-20'   GROUP BY	bas_departures.DESCHN,bas_departures.ORGCHN

count()的结果命名为count
然后我用一个bo定义为

    /**
     * 始发站
     */
    private String ORGCHN;
    /**
     * 目的地
     */
    private String DESCHN;
    /**
     * 重复次数
     */
    private String count;
    /**
     * 进港出港标识
     */
    private String flag;

但是count 无法得到sql结果里的count()

        String hardSql2 = "SELECT bas_departures.ORGCHN,bas_departures.DESCHN,count(bas_departures.DESCHN) count" +
                " FROM bas_departures  WHERE bas_departures.ORG='KMG'"+
                " AND bas_departures.SDT='"+ DateUtil.getDate()+"' " +
                " GROUP BY bas_departures.DESCHN,bas_departures.ORGCHN";//自己编写SQL
        //自写sql查询
        Sql sql = Sqls.create(hardSql2);
        sql.setCallback(Sqls.callback.entities());
        Entity<Departures> entity = dao.getEntity(Departures.class);
        sql.setEntity(entity);    //必须
        dao.execute(sql);
        List<Departures> fliList = sql.getList(Departures.class);

请兽总大神答疑解惑,跪谢

4 回复

自行扩展一下entities()回调

还有个办法,就是先用records取出,然后逐个record变toEntity, 而且record里面会有count的内容

@wendal
谢谢兽总

        String hardSql2 = "SELECT bas_departures.ORGCHN,bas_departures.DESCHN,count(bas_departures.DESCHN) count" +
                " FROM bas_departures  WHERE bas_departures.ORG='KMG'" +
                " AND bas_departures.SDT='" + DateUtil.getDate() + "' " +
                " GROUP BY bas_departures.DESCHN,bas_departures.ORGCHN";//自己编写SQL
        //自写sql查询
        Sql sql = Sqls.create(hardSql2);
//        sql.setCallback(Sqls.callback.entities());
//        Entity<Departures> entity = dao.getEntity(Departures.class);
//        sql.setEntity(entity);    //必须
        sql.setCallback(new SqlCallback() {
            public Object invoke(Connection conn, ResultSet rs, Sql sql) throws SQLException {
                List<Flight> list = new LinkedList<>();
                Flight fli = null;
                while (rs.next()){
                    fli = new Flight();
                    fli.setORGCHN(rs.getString("ORGCHN"));
                    fli.setDESCHN(rs.getString("DESCHN"));
                    fli.setCount(rs.getString("count"));
                    fli.setFlag("D");
                    list.add(fli);
                }
                return list;
            }
        });
        dao.execute(sql);
        List<Flight> fliList = sql.getList(Flight.class);
        return fliList;

这样就可以了,感谢大神 么么哒

求大神指教

List<Flight> list = new LinkedList<>();

你这个里面的Filght是新创建的实体类吗??我这现在正在弄这个函数,

添加回复
请先登陆
回到顶部