用Spring jdbctemplate做排序的时候出现查出数据顺序与数据库不一致的现象,求解

XMonsterH 2012-07-12 02:44:22
有遇到同样问题的吗??

下面是主要代码:



@Repository("cbaDao")

public class CBADaoImpl extends JdbcDaoSupport implements ICBADao {



private static final String QUERYPARSEINFO = " select * from parse_XXX order by ? ? ";



@SuppressWarnings("unchecked")

public List<Parse> queryParseList(String g,String j)//g=排序字段 //f=asc

{

return getJdbcTemplate().query(QUERYPARSEINFO,new Object[]{g,f} new RowMapper() {

public Object mapRow(ResultSet rs, int rowNum)

throws SQLException {

Parse parse=new Parse();

parse.setq(rs.getString("q"));

parse.setw(rs.getString("w"));

parse.sete(rs.getString("e"));

parse.setr(rs.getString("r"));

parse.sett(rs.getInt("t"));

parse.sety(rs.getInt("y"));

parse.setu(rs.getString("u"));

parse.seti(rs.getString("i"));

parse.seto(rs.getString("o"));

parse.setp(rs.getString("p"));

return parse;

}

});

}

}





数据库排序字段后结果是 :

1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1

2 2 2 2 2 2 2 2

2 2 2 2 2 2 2 2

2 2 2 2 2 2 2 2

3 3 3 3 3 3 3 3

3 3 3 3 3 3 3 3

3 3 3 3 3 3 3 3

3 3 3 3 3 3 3 3

走程序显示到页面后的结果是:

1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3
1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3
1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3
。。。。。。。。。。



排除页面问题和其它问题,自己将问题定位在spring框架的数据封装的某个环节(列如:RowMapper)

求解。。。。求高手路过。。。。只有高手能解决。。。。。
...全文
378 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
XMonsterH 2012-11-26
  • 打赏
  • 举报
回复
问题出在这个地方 private static final String QUERYPARSEINFO = " select * from parse_XXX order by ? ? "; 把SQL语句写到方法里改成用参数传进来就可以了。是SQL版本的问提。 public List<Parse> queryParseList(String g,String j)//g=排序字段 //f=asc { String QUERYPARSEINFO = " select * from parse_XXX order by g j "; return getJdbcTemplate().query(QUERYPARSEINFO,new Object[]{g,f} new RowMapper() { public Object mapRow(ResultSet rs, int rowNum) throws SQLException {。。。。。。
jdluojing 2012-07-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

找到问题了 ,是SQL拼接问题,拼接后sql里面的排序字段有引号导致排序不正常.
[/Quote]
我也遇到这个问题,兄弟采用的什么办法解决引号的问题的?
XMonsterH 2012-07-17
  • 打赏
  • 举报
回复
找到问题了 ,是SQL拼接问题,拼接后sql里面的排序字段有引号导致排序不正常.
EverWHL 2012-07-13
  • 打赏
  • 举报
回复
两者区别很明显,只是没有分组的问题
private static final String QUERYPARSEINFO = " select * from parse_XXX order by ? ? ";
把sql加上group by 就行了
XMonsterH 2012-07-13
  • 打赏
  • 举报
回复
估计问题出在spring封装的返回LIST里面,求高手解疑
XMonsterH 2012-07-13
  • 打赏
  • 举报
回复
return getJdbcTemplate().query(QUERYPARSEINFO,new Object[]{g,f} new RowMapper()
等同于return getJdbcTemplate().query(QUERYPARSEINFO,new Object[]{g(字段名),ASC} new RowMapper()
之后SQL语句就会变成:select * from parse_XXX order by g ASC
只是按照字段“g”排序
haiercs 2012-07-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

getJdbcTemplate().query(QUERYPARSEINFO,new Object[]{g,f} new RowMapper()
你这是按照g和f同时排序,并不只是按照g来排序
[/Quote]
说错了,抱歉。。。
haiercs 2012-07-13
  • 打赏
  • 举报
回复
getJdbcTemplate().query(QUERYPARSEINFO,new Object[]{g,f} new RowMapper()
你这是按照g和f同时排序,并不只是按照g来排序
XMonsterH 2012-07-13
  • 打赏
  • 举报
回复
字段“q”为ID字段(不重复),其它字段可以重复,我是要找出所有记录并按“g”来排序,楼上的那样来个group by结果就去掉了字段“g”的重复数据了,所以是不行的。

谢谢回复
XMonsterH 2012-07-12
  • 打赏
  • 举报
回复
高手在哪里,急死了。。。。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧