多表联合查询后的结果的结果放入list里,如何拿出来

问题描述

DaoImpl代码:public List findstudentidList(int i){String hql = "from User u,TTopic t,Log l where u.id = ? and u.name = t.teachername and t.topicid = l.topicid and t.isfinaltopic = true and l.isdroped = true";return this.getHibernateTemplate().find(hql,i);}Action代码:list = new ArrayList();list = this.service.findListstudentid(user.getId());for (int i = 0; i < list.size(); i++){Object[] arr = (Object[])list.get(i);System.out.println("a = "+arr[0].toString());System.out.println("b = "+arr[1].toString());System.out.println("c = "+arr[2].toString());}控制台怎么输出这些:a = gdms.bean.User@1298826b = gdms.bean.TTopic@1a99836c = gdms.bean.Log@148083ba = gdms.bean.User@1298826b = gdms.bean.TTopic@1f31ad9c = gdms.bean.Log@18b4ccb 问题补充:yangleilt 写道

解决方案

如果说 根据多表查询只是查询的条件不同 而显示的数据还是一个表中的数据 这样的话 查询语句按SQL语句一样的写法 如果说 查询出数据要分别显示几个表中的信息的话 这个很麻烦 新建一个实体类 实体类的属性包含要显示数据的字段 然后只能按照原始的数据库连接读取数据 一个个的赋值 添加到List中
解决方案二:
DaoImpl代码: public List findstudentidList(int i){ String hql = "from User u,TTopic t,Log l where u.id = ? and u.name = t.teachername and t.topicid = l.topicid and t.isfinaltopic = true and l.isdroped = true"; return this.getHibernateTemplate().find(hql,i); } Action代码: list = new ArrayList(); list = this.service.findListstudentid(user.getId()); for (int i = 0; i < list.size(); i++){ Object[] arr = (Object[])list.get(i); System.out.println("a = "+arr[0].toString()); System.out.println("b = "+arr[1].toString()); System.out.println("c = "+arr[2].toString()); } public List findstudentidList(int i){...和list = this.service.findListstudentid(user.getId()); 中的findstudentidList findListstudentid 有问题吗1你能不能把正确的代码 贴出来呀
解决方案三:
String hql = "from User u,TTopic t,Log l where u.id = ? and u.name = t.teachername and t.topicid = l.topicid and 这句话里面User u,表示了查出来的是对象list = new ArrayList(); list = this.service.findListstudentid(user.getId()); for (int i = 0; i < list.size(); i++){ Object[] arr = (Object[])list.get(i); System.out.println("a = "+arr[0].toString()); System.out.println("b = "+arr[1].toString()); System.out.println("c = "+arr[2].toString()); } 将对象取出来放到list里面 然后又一一读取放到object的数据里面 这一步有点多余! 为何不直接读取list 从list里面取呢?arr[0]取到的还是对象 所以打印出来的是内存地址了!
解决方案四:
Hibernate取到的是未转型的Object,先转型,然后取bean中的属性值就可以了。例如:((User)arr[0]).getUserName()

时间: 2024-08-02 07:41:20

多表联合查询后的结果的结果放入list里,如何拿出来的相关文章

sql中怎样在多表联合查询后的表中进行增删改操作,新手求大神详细讲解

问题描述 sql中怎样在多表联合查询后的表中进行增删改操作,新手求大神详细讲解 我在C#的winform的DataGridView中显示联合查询的结果,下面就是4张表的联合查询的语句,我需要在DataGridView显示的表中做删除操作,只需要知道删除的sql语句就行,用存储过程也好,级联删除也好,希望详细,我已经在这个问题上困扰很久了,万分感谢! 解决方案 在做C#桌面程序时,我们通常会遇到删除dataGridview中选中的一和或都多行数据,在网上查了好多方法,有些只能删除dataGridv

sql server-SQLSERVER 结构相同表 联合查询 分页

问题描述 SQLSERVER 结构相同表 联合查询 分页 1C 两张表:HistoryOrders.Orders结构完全一样,每天3天将Orders中的数据导入到了HistoryOrders中.数据量挺大,平均一天的数据在10W以上. 需求:根据其中某一列(例如会员ID)Group,查询统计数据(总金额....),并且是任意时间段(这里可能就会跨两个表)的数据分页查询.问题:怎样查能实现而且效率高.怎样统计总量. 解决方案 简单的做法你这里就是两个表数据查询结果的union合集后再统计考虑His

详解Mysql多表联合查询效率分析及优化_Mysql

1. 多表连接类型1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如: SELECT * FROM table1 CROSS JOIN table2 SELECT * FROM table1 JOIN table2 SELECT * FROM table1,table2         由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE, ON或USING条件的时候一般不建议使用,因为当数据表项目太多的时候,会非常慢

SharePoint 2013 列表多表联合查询

在SharePoint的企业应用中,遇到复杂的逻辑的时候,我们会需要多表查询:SharePoint和Sql数据表一样,也支持多表联合查询,但是不像Sql语句那样简单,需要使用SPQuery的Joins属性来完成. 下面,我们通过一个简单的例子,为大家演示一下如何使用SPQuery通过查阅项字段来进行两个列表的联合查询. 1.首先创建测试列表,City是城市,然后有一个列表叫做Address,是地址,通过查阅项Location进行关联,CityID字段是Number类型,这里代表城市的ID号: 创

link中如何跨数据库和内存表联合查询?如何同时判断列表中多个元素的存在性?

问题描述 link中如何跨数据库和内存表联合查询?如何同时判断列表中多个元素的存在性? link中如何跨数据库和内存表联合查询?如何同时判断列表中多个元素的存在性? 解决方案 直接用数组是可以的. int[] ids = { 1, 2, 3, 4, 5 }; var query = from x in db.Table where ids.Contains(x) select x;

link中内存表和数据库表联合查询怎么做?为什么提示invaild invoke?

问题描述 link中内存表和数据库表联合查询怎么做?为什么提示invaild invoke? link中内存表和数据库表联合查询怎么做?为什么提示invaild invoke? 解决方案 检查下是不是访问了null的对象?

mysql-PHP MYSQL 两表联合查询问题

问题描述 PHP MYSQL 两表联合查询问题 现在有两个表,第一个201411,第二个user_list, 第一个是存放用户相关的数据,第二个是存放登录用户名和密码的信息. 他们有一个共有的字段:username, 现在要如何才能调用和显示在登陆了user_list的账号(username)的201411这张表里面的其他信息. 解决方案 SELECT T2.* FROM user_list T1 INNER JOIN 201411 T2 ON T1.username = T2.username

sql-SQL 三张表联合查询中间表有空字段的问题

问题描述 SQL 三张表联合查询中间表有空字段的问题 table1(id1).table2(id2id1no).table3(noname)select t3.name from table1 t1(nolock) inner join table2 t2(nolock)on t1.id1 = t2.id1inner join table3 t3(nolock)on t2.no = t3.no第2张表里面对应的no字段有可能为空,为空的时候就取不到name而不是取no为空的name字段 解决方案

sql-SQL 三张表联合查询其中表有空字段的问题

问题描述 SQL 三张表联合查询其中表有空字段的问题 table1(id1).table2(id2id1no).table3(noname) select t3.name from table1 t1(nolock) inner join table2 t2(nolock)on t1.id1 = t2.id1inner join table3 t3(nolock)on t2.no = t3.no 第2张表里面对应的no字段有可能为空,为空的时候name就为空,这个要怎么查询才不会有冗余,请指教