osc的QueryHelper类怎么查询带有别名的sql语句

FoxHu 发布于 2013/08/30 07:02
阅读 624
收藏 0

@tsl0922 你好,想跟你请教个问题:在自己的项目中借鉴了osc的底层数据库操作类QueryHelper类和POJO类,对于select * from where...这样的查询语句可以很好的操作,但是对于查询语句中出现别名的语句应该怎么操作呢?比如留言箱的首页要查询出我跟每个人的最后一条留言的话,要执行这样的sql语句

SELECT MAX(id) AS id, COUNT(id) AS msgCount FROM osc_msgs WHERE user = ? GROUP BY friend ORDER BY id DESC

应该调用QueryHelper或者POJO中的哪个方法来得到id和msgCount呢?osc是怎么做的呢?谢谢!

加载中
0
FoxHu
FoxHu

@tsl0922 在执行

SELECT MAX(id) AS id, COUNT(id) AS msgCount FROM osc_msgs WHERE user = ? GROUP BY friend ORDER BY id DESC

这句的时候,如果我调用QueryHelper类中的query方法可以吗?传递给它的beanClass为Msg,Msg字段为id,user,friend,sender,receiver,type,content,send_time,status

/**
	 * 对象查询
	 * @param <T>
	 * @param beanClass
	 * @param sql
	 * @param params
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public static <T> List<T> query(Class<T> beanClass, String sql, Object...params) {
		try{
			return (List<T>)_g_runner.query(getConnection(), sql, _IsPrimitive(beanClass)?_g_columnListHandler:new BeanListHandler(beanClass), params);
		}catch(SQLException e){
			throw new DBException(e);
		}
	}


这样返回的list中可以获得id和msgCount吗?谢谢!

FoxHu
FoxHu
回复 @tsl0922 : 非常感谢!谢谢你提供的思路!
tsl0922
tsl0922
回复 @FoxHu : 因为你的SQL里有COUNT,MAX之类的结果,这个不是数据库字段里面的。我一般都会偷懒,直接用已有的Bean做容器来装结果,只要你把SQL里列的别名取成和Bean里一个字段名一致就可以了,当然还得数据类型一致,比如说SQL返回一个String类型的列,你把它映射到一个Bean中Integer类型字段上是肯定不可以的。
FoxHu
FoxHu
回复 @tsl0922 : 我又糊涂了,bean是我为了获得max(id)和msgCount新定义的类,而我建的数据库表osc-msgs表的字段并不能和它对应的啊?
tsl0922
tsl0922
回复 @FoxHu : 是的,定义Bean的时候还要注意字段名称和类型得和数据库字段对应的上。
FoxHu
FoxHu
回复 @tsl0922 :谢谢, 那是不是还得重新定义一个Bean包括两个字段id,msgCount;然后传递给query()就可以获得表osc-msgs的max(id)和msgCount了?
下一页
0
红薯
红薯
你要更新 dbutils 到最新版本,或者查看 这个页面的介绍。
FoxHu
FoxHu
谢谢老大!
返回顶部
顶部