java - 如何使用sql2o从SQL中获取数据?

标签 java mysql sql2o

我正在尝试使用 sql2o lib 将数据从 mySQL 获取到 java 中的列表。

但由于某种原因,我只是无法理解如何正确使用它(看起来像)。

这是错误的代码:

   List<String> returning = new ArrayList<String>();
   String date = "";
   String playerList = "";
   String playerCount = "";
   String playerMax = "";

   con.createQuery(sql)
   .throwOnMappingFailure(true).addColumnMapping("date", date)
   .addColumnMapping("playerList", playerList)
   .addColumnMapping("playerCount", playerCount)
   .addColumnMapping("playerMax", playerMax).executeAndFetch(String.class);

   returning.add(date);
   returning.add(playerList);
   returning.add(playerCount);
   returning.add(playerMax);

这是我得到的错误:

org.sql2o.Sql2oException: Could not map date to any property.
   at org.sql2o.DefaultResultSetHandlerFactory.newResultSetHandler0(DefaultResultSetHandlerFactory.java:199)
   at org.sql2o.DefaultResultSetHandlerFactory.access$200(DefaultResultSetHandlerFactory.java:17)
   at org.sql2o.DefaultResultSetHandlerFactory$5.evaluate(DefaultResultSetHandlerFactory.java:160)
   at org.sql2o.DefaultResultSetHandlerFactory$5.evaluate(DefaultResultSetHandlerFactory.java:156)
   at org.sql2o.tools.AbstractCache.get(AbstractCache.java:49)
   at org.sql2o.DefaultResultSetHandlerFactory.newResultSetHandler(DefaultResultSetHandlerFactory.java:173)
   at org.sql2o.PojoResultSetIterator.<init>(PojoResultSetIterator.java:20)
   at org.sql2o.Query$14.iterator(Query.java:547)
   at org.sql2o.Query.executeAndFetch(Query.java:588)
   at org.sql2o.Query.executeAndFetch(Query.java:574)
   at lol.discordbot.database.QueryServerInfo.getCurrent(QueryServerInfo.java:31)
   at lol.discordbot.command.Query.execute(Query.java:20)
   at lol.discordbot.command.CommandsListener.onMessageReceived(CommandsListener.java:39)

最佳答案

我认为您误解了列映射是什么。列映射用于将列名称映射到对象字段名称。

您应该首先创建一个数据类来保存查询结果。从上面的代码来看,我假设您正在尝试获取玩家。

public class Player {
   public String date;
   public String playerList;
   public String playerCount;
   public String playerMax
}

(考虑使用更好的数据类型。Date 表示日期,int 表示计数等)

然后就可以使用sql2o来获取数据了

List<Player> players = con.createQuery(sql).executeAndFetch(Player.class);

关于java - 如何使用sql2o从SQL中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48697084/

相关文章:

java - 使用流根据键值合并 List<Pair<A,B>> 到 List<Pair<A,List<B>>>

java - 如何命名这样的复合类?

java - 在 sql2o 中插入时出错

php - 使用 mysql 的 Rails 应用程序 - 语法错误仅适用于 mysql 而不是 sqlite?

java - 选择一个好的排序算法

java - 组合多个 jar 的清洁方法?最好使用 Ant

java - RequestMapping 占位符在 JUnit 测试中不起作用

java - 使用 Mule ESB 解析 MySQL 存储过程结果集

mysql - 有正确的方法连接到MySQL吗?