如何在Dbutils中解决这个sql字符串?

时间:2017-04-20 02:53:15

标签: java mysql java-ee crud apache-commons-dbutils

    public List<Hero> list() throws SQLException {
        return list(0, Short.MAX_VALUE);
    }

    public List<Hero> list(int start, int count) throws SQLException{

             Connection c = this.getConnection();                
             QueryRunner runner = new QueryRunner();
             String sql = "select * from hero order by id desc limit ?,? ";  
             Object params[] = {"start", "count" };                               
             List<Hero> heros = (List<Hero>) runner.query(c,sql,new BeanListHandler(Hero.class),params);     

             DbUtils.closeQuietly(c);    

             return heros;
    }

在此之前,我已经导入了我需要的Dbutils JAR,例如org.apache.commons.dbutils.handlers.BeanListHandlerorg.apache.commons.dbutils.QueryRunner 但在运行我的项目之后,它的错误就是:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;在第1行查询:按英雄顺序选择*   desc限制?,?参数:[start,count]

我知道程序中有问题,但我不想找到所有,我只想找到使用限制的表格的一部分? (我只知道这个sql语句可以做到这一点。)

你可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

您将字符串作为参数传递,因此它将SQL限制按字面运行为LIMIT 'start','count'

请改为尝试:

Object params[] = {start, count };

这样您就可以构建实际int值的参数数组(现在自动生成Integer}