Nutz使用笔记----获取插入数据id、自定义SQL

来源:互联网 发布:jquery post 数组参数 编辑:程序博客网 时间:2024/05/21 17:47

因为工作需要,使用的pg数据。在获取sequence时,一直获取不到,不知道是因为数据库设计问题还是Nutz中没找到合适的方法。最后发现其实在插入数据时,能返回当前id。

select  nextval('seq_t_order') id;
        Order or = new Order();        Order or2 = new Order();        or.setOrderCode("00000");        or.setStatus(1);        or2 = dao.insert(or);        System.out.println(or2.getId());

Nutz 在对象的使用上很是强大。如果定义上表结构,能直接使用各种查询、排序、插入。

public List<Venue> getVenuesByCampusId(Long campusId,Long venueId) throws Exception{    return dao.query(Venue.class, Cnd.where("campus_id", "=", campusId).and("venue_id", "=", venueId).desc("seat_count"));    }
public void insertOrderInfo(OrderInfo oi){dao.insert(oi);}

还能方便的自定义。

StringBuffer sb = new StringBuffer();    //当前院校id    sb.append(" select t.*,com.comm_num from t_venue t left join ( ");    sb.append(" select tm.venue_id,count(tm.venue_id) comm_num from t_comment tm where 1=1 ");    if(venueId != null){    sb.append(" and tm.venue_id != "+venueId);    }    sb.append(" group by tm.venue_id ) com on t.id = com.venue_id where 1=1 ");    if(venueId != null){    sb.append(" and t.id != "+venueId);    }    sb.append(" and t.campus_id in (select distinct tv.campus_id from t_venue tv where 1=1 ");    if(venueId != null){    sb.append(" and tv.id = "+venueId);    }    sb.append(" )  order by com.comm_num desc nulls last  ");        Sql sql2 =  Sqls.create(sb.toString());    sql2.setCallback(Sqls.callback.entities());    sql2.setEntity(dao.getEntity(Venue.class));    dao.execute(sql2);    return sql2.getList(Venue.class);
更强大的自定义

Sql sql =  Sqls.create("  select count(tm.venue_id) num from t_comment tm group by tm.venue_id ");    sql.setCallback(new SqlCallback() {        public Object invoke(Connection conn, ResultSet rs, Sql sql) throws SQLException {        List<Object> obj = new ArrayList<Object>();            while (rs.next()){            obj.add(rs.getObject("num"));            }            return obj;        }    });    dao.execute(sql);    List list =  sql.getList(Object.class);


原创粉丝点击