用Spring jdbctemplate做排序的时候出现查出数据顺序与数据库不一致的现象,求解
有遇到同样问题的吗??
下面是主要代码:
@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)
求解。。。。求高手路过。。。。只有高手能解决。。。。。
[解决办法]
高手在哪里,急死了。。。。
[解决办法]
两者区别很明显,只是没有分组的问题
private static final String QUERYPARSEINFO = " select * from parse_XXX order by ? ? ";
把sql加上group by 就行了
[解决办法]
字段“q”为ID字段(不重复),其它字段可以重复,我是要找出所有记录并按“g”来排序,楼上的那样来个group by结果就去掉了字段“g”的重复数据了,所以是不行的。
谢谢回复
[解决办法]
getJdbcTemplate().query(QUERYPARSEINFO,new Object[]{g,f} new RowMapper()
你这是按照g和f同时排序,并不只是按照g来排序
[解决办法]
说错了,抱歉。。。
[解决办法]
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”排序
[解决办法]
估计问题出在spring封装的返回LIST里面,求高手解疑
[解决办法]
找到问题了 ,是SQL拼接问题,拼接后sql里面的排序字段有引号导致排序不正常.
[解决办法]
我也遇到这个问题,兄弟采用的什么办法解决引号的问题的?
[解决办法]
问题出在这个地方
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 {。。。。。。