Java的JDBC能否直接返回HashMap?

ID:16731 / 打印

java的jdbc能否直接返回hashmap?

java的jdbc能否返回hashmap?

python中的pymysql可以通过参数cursorclass设置返回的查询结果集为字典类型。那么,java中的jdbc是否存在类似的方法,可以设置返回的数据格式为hashmap?

答案:

jdbc返回的数据类型为resultsetrow,无法直接返回hashmap。但是,可以通过以下方法将结果集转换为hashmap:

立即学习“Java免费学习笔记(深入)”;

  • 通过代理类实现自定义结果集类型,例如:
import java.sql.resultset; import java.util.hashmap; import java.util.map;  public class hashmapresultsetproxy implements resultset {     private resultset rs;      public hashmapresultsetproxy(resultset rs) {         this.rs = rs;     }      @override     public map<string, object> gethashmap() throws sqlexception {         hashmap<string, object> map = new hashmap<>();         int numcols = rs.getmetadata().getcolumncount();         for (int i = 0; i < numcols; i++) {             map.put(rs.getmetadata().getcolumnname(i + 1), rs.getobject(i + 1));         }         return map;     }      // 其他resultset实现... }
  • 使用代理类包装jdbc提供的resultset返回新结果集,从而让jdbc支持返回hashmap:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; import java.util.Map;  public class JdbcHashMapDemo {      public static void main(String[] args) throws SQLException {         Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "user", "password");         ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM users");          HashMapResultSetProxy hashMapResultSetProxy = new HashMapResultSetProxy(rs);         Map<String, Object> row = hashMapResultSetProxy.getHashMap();         System.out.println(row);          rs.close();         conn.close();     } }
上一篇: Spring 中FactoryBean 与 new 实例化对象的区别:何时创建、谁来管理、如何区分?
下一篇: Java函数调用:return语句如何影响函数执行?

作者:admin @ 24资源网   2024-11-27

本站所有软件、源码、文章均有网友提供,如有侵权联系308410122@qq.com

与本文相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。