Guest User

Untitled

a guest
Apr 25th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.02 KB | None | 0 0
  1. package com.forsrc.utils;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.ResultSetMetaData;
  7. import java.sql.SQLException;
  8. import java.util.HashMap;
  9. import java.util.Map;
  10.  
  11. import javax.sql.DataSource;
  12.  
  13. public class JdbcUtils {
  14.  
  15. private DataSource dataSource;
  16. private int fetchSize = 1000;
  17.  
  18. public JdbcUtils(DataSource dataSource) {
  19. this.dataSource = dataSource;
  20. }
  21.  
  22. public JdbcUtils(DataSource dataSource, int fetchSize) {
  23. this.dataSource = dataSource;
  24. this.fetchSize = fetchSize;
  25. }
  26.  
  27. public void exec(final String sql, final Object[] params, final Handler handler) throws Exception {
  28. Connection connection = dataSource.getConnection();
  29. PreparedStatement statement = null;
  30. ResultSet resultSet = null;
  31. try {
  32. statement = connection.prepareStatement(sql);
  33. statement.setFetchSize(fetchSize);
  34. if (params != null) {
  35. for (int i = 0; i < params.length; i++) {
  36. statement.setObject(i + 1, params[i]);
  37. }
  38. }
  39.  
  40. resultSet = statement.executeQuery();
  41. handler.handle(resultSet);
  42. } catch (SQLException e) {
  43. throw e;
  44. } finally {
  45. if (resultSet != null) {
  46. try {
  47. resultSet.close();
  48. } catch (SQLException e) {
  49. }
  50. }
  51. if (statement != null) {
  52. try {
  53. statement.close();
  54. } catch (SQLException e) {
  55. }
  56. }
  57. if (connection != null) {
  58. try {
  59. connection.close();
  60. } catch (SQLException e) {
  61. }
  62. }
  63. }
  64.  
  65. }
  66.  
  67. public void exec(final String sql, final Object[] params, final DataHandler handler) throws Exception {
  68. exec(sql, params, new Handler() {
  69.  
  70. @Override
  71. public void handle(ResultSet resultSet) throws Exception {
  72. ResultSetMetaData rsm = resultSet.getMetaData();
  73. final int columnCount = rsm.getColumnCount();
  74. String[] columnName = new String[columnCount];
  75. for (int i = 0; i < columnCount; i++) {
  76. columnName[i] = rsm.getColumnName(i + 1);
  77. }
  78. int row = 1;
  79. Map<String, Object> data = null;
  80. while (resultSet.next()) {
  81. data = new HashMap<>(columnCount);
  82. for (int i = 0; i < columnCount; i++) {
  83. data.put(columnName[i], resultSet.getObject(i + 1));
  84. }
  85. handler.handle(row++, data);
  86. }
  87. }
  88.  
  89. });
  90.  
  91. }
  92.  
  93. public static interface Handler {
  94. public void handle(ResultSet resultSet) throws Exception;
  95. }
  96.  
  97. public static interface DataHandler {
  98. public void handle(int row, Map<String, Object> data) throws Exception;
  99. }
  100. }
Add Comment
Please, Sign In to add comment