NutzCN Logo
问答 Dao使用时,怎样查询需要的列?
发布于 3005天前 作者 qq_16dd5808 1837 次浏览 复制 上一个帖子 下一个帖子
标签:

我是这样使用的

@Test
    public void t7() {
        Dao dao = dbTools.getDao();
        Record r = dao.fetch("sunyu_resource", Cnd.where("id", "=", "21326916-33a1-4d10-a29c-d156a1bc7b76"));
        System.out.println(r.getString("name"));
    }

后台日志

[DEBUG][2016-09-30 08:34:42.633]org.nutz.dao.impl.sql.run.NutDaoExecutor.printSQL(NutDaoExecutor.java:388)SELECT * FROM sunyu_resource  WHERE id=? LIMIT 0, 1 
    |                                    1 |
    |--------------------------------------|
    | 21326916-33a1-4d10-a29c-d156a1bc7b76 |
  For example:> "SELECT * FROM sunyu_resource  WHERE id='21326916-33a1-4d10-a29c-d156a1bc7b76' LIMIT 0, 1 "

其实我是想要

SELECT name FROM sunyu_resource  WHERE id='21326916-33a1-4d10-a29c-d156a1bc7b76' LIMIT 0, 1

只要查询name字段就可以了,不想查询所有字段
怎么破?

5 回复

@wendal
我看文档了,文档里面写的是

//原写法
FieldFilter.create(Pet.class, "^id|name$").run(new Atom(){
    public void run(){
        dao.update(pet); // 这里的pet必须是final
    }
});
// 新的写法
Daos.ext(dao, FieldFilter.create(Pet.class, "^id|name$")).update(pet);
// ext方法会返回一个Dao实例,是对原有dao对象的封装

但是我没有创建POJO,不构建 POJO 访问数据库的方式。FieldFilter.create里面都是需要Class的,怎么破?

@wendal

自定义sql倒是能实现,但是代码多了几行,有点郁闷。没有原先那种简洁

//这种麻烦
@Test
    public void t8() {
        Dao dao = dbTools.getDao();
        Sql sql = Sqls.create("select name from sunyu_resource");
        sql.setCallback(Sqls.callback.records());
        Sql s = dao.execute(sql);
        List<Record> l = s.getObject(List.class);
        for (Record r : l) {
            System.out.println(r.getString("name"));
        }
    }

//这种简洁
    @Test
    public void t9() {
        Dao dao = dbTools.getDao();
        List<Record> l = dao.query("sunyu_resource", null);
        for (Record r : l) {
            System.out.println(r.getString("name"));
        }
    }

封装一下就好了

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