如何从 JDBC 查询中获取所有元素
Posted
技术标签:
【中文标题】如何从 JDBC 查询中获取所有元素【英文标题】:How to get all the element from JDBC query 【发布时间】:2010-09-28 18:33:14 【问题描述】:你好,
我有这样的查询
final Query contractQuery = cgnDao.getEntityManager().
createNativeQuery("SELECT k.phrase, ak.type FROM key k INNER JOIN adkey ak USING (key_id) WHERE pck.pub_id =" + pid +" AND pck.c_id =" + campId );
如何从查询中获取每个元素?
其中短语是字符串,类型是枚举
在 Java 中
谢谢
【问题讨论】:
【参考方案1】:查看this link on the JBoss JPA docs 和this link on java2s。
简而言之,您有一个可以调用 getResultList() 的 Query,它会返回一个可以迭代的 List。看看JPA javadoc。
另外,我建议使用 PreparedStatements,例如
String sqlQuery = "select * from tbl_spaceship where owner = ?";
Query q = entityManager.createNativeQuery(sqlQuery, SpaceShip.class);
q.setParameter( 1, "Han" );
q.getResultList();
优点是 JPA 提供者将负责转义输入值。在这个特定的用例中没有必要,但良好的习惯永远不会受到伤害。
【讨论】:
【参考方案2】:首先,您不应该使用字符串连接,而应该使用位置参数(只有位置参数绑定可移植地用于原生查询)。其次,对于返回标量值的本机查询,结果将是List
的Oject[]
。所以结果可能是这样的:
String sql = "SELECT k.phrase, ak.type " +
"FROM key k INNER JOIN adkey ak USING (key_id) " +
"WHERE pck.pub_id = ?1 AND pck.c_id = ?2";
Query q = em.createNativeQuery(sql);
q.setParameter(1, pubId);
q.setParameter(2, cId);
List<Object[]> results = q.getResultList();
参考文献
JPA 1.0 规范 第 3.6.3 节“命名参数” 第 3.6.6 节“SQL 查询” 第 4.6.4 节“输入参数”【讨论】:
【参考方案3】:您可以使用方法的值从结果集中获取枚举实例
enum A
A.valueOf()
【讨论】:
以上是关于如何从 JDBC 查询中获取所有元素的主要内容,如果未能解决你的问题,请参考以下文章