NutzCN Logo
问答 用自定义sql,查一条记录转为一个对象,怎么写?这个我测试了很多写法,api也看了,就是不行?
发布于 2812天前 作者 qq_7f92aca5 1692 次浏览 复制 上一个帖子 下一个帖子
标签:
Sql sql = Sqls.queryRecord(" SELECT * FROM t_treenode WHERE node_id IN (SELECT ishead FROM t_treenode WHERE node_id = @node_id "); 
		sql.setParam("node_id", node_id);
		this.dao.execute(sql);

下面测试了一些,求wendal哥等官方军给解答

Treenode parentNode = sql.getObject(Treenode.class);
List<Record> list = sql.getList(Record.class);
		Treenode entity = null;
		for (Record r : list) {
			entity = r.toEntity(this.dao.getEntity(Treenode.class));
		}
List<Treenode> list = sql.getList(Treenode.class);
		//System.out.println(list.get(0));
11 回复

这些都娶不到我要的对象啊

补充:是什么都取不出来

什么都取不出来的意思是list.size=0吗?

System.out.println(list.get(0)); 之后 压根没输出 任何东西 , 也没报错

应该怎么写啊 wendal 哥

@qq_7f92aca5

System.out.println(list.get(0)); 

debug过?这代码起码输出一个空行,要么抛异常

                Sql sql = Sqls.queryEntity(" SELECT * FROM t_treenode WHERE node_id IN (SELECT ishead FROM t_treenode WHERE node_id = @node_id "); 
		sql.setParam("node_id", node_id);
		this.dao.execute(sql);
                List<Treenode> list = sql.getList(Treenode.class);

但是, 这SQL看着就不对吧, 如果node_id = 128, 那么sql就是

SELECT * FROM t_treenode WHERE node_id IN (SELECT ishead FROM t_treenode WHERE node_id = 128)"

ishead 估计是个boolean, 在mysql里面就是 0 和1, 所以 子查询的结果只能是0或者1, 再所以上述SQL能查出的数据集是:

SELECT * FROM t_treenode WHERE node_id IN (0, 1)"

这是你想要的? 不太可能吧

sql都是在数据库测试好了,才拿过来的,通过子节点id取一个对应的父节点,这句sql是没问题的
wendal哥:如果我想取出一行记录,转成对象,最好的写法是哪种啊?

fetchEntity就一条记录

               Sql sql = Sqls.fetchEntity(" SELECT * FROM t_treenode WHERE node_id IN (SELECT ishead FROM t_treenode WHERE node_id = @node_id "); 
		sql.setParam("node_id", node_id);
		this.dao.execute(sql);
                Treenode node = sql.getObject(Treenode.class);

好的 谢谢哥哥

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