通過Spring的jdbcTemplate作為dao層的框架,將獲取到的字段名,及其值,通過put放在jsonObject或jsonArray中,將json返回。

public class SpringJdbcService { private static Logger logger = LoggerFactory.getLogger(SpringJdbcService.class, SpringJdbcService.class.getName()); @Autowired private JdbcTemplate jdbcTemplate; /** * 查詢 * * @return JSONArray json數組 */ public JSONArray getJSONArray(String sql, Object[] params) { return getJSONArray(sql, params, false); } public JSONArray getJSONArray(String sql, Object[] params, final boolean toUpper) { logger.info("get sql:" + sql); if (params != null && params.length > 0) { for (Object o : params) { logger.info("value:" + o); } } return jdbcTemplate.query(sql, params, new ResultSetExtractor<JSONArray>() { @Override public JSONArray extractData(ResultSet resultSet) throws SQLException, DataAccessException { ResultSetMetaData rsd = resultSet.getMetaData(); int clength = rsd.getColumnCount(); JSONArray ja = new JSONArray(); String columnName; try { while (resultSet.next()) { JSONObject jo = new JSONObject(); for (int i = 0; i < clength; i++) { columnName = rsd.getColumnLabel(i + 1); columnName = toUpper ? columnName.toUpperCase() : columnName.toLowerCase(); jo.put(columnName, resultSet.getObject(i + 1)); } ja.put(jo); } } catch (Exception e) { } return ja; } }); } public JSONObject getJSONObject(String sql) { return getJSONObject(sql, new Object[]{}); } /** * 說明:查詢,返回的是Json對象 * * @return JSONObject */ public JSONObject getJSONObject(String sql, Object[] params) { return getJSONObject(sql, params, false); } public JSONObject getJSONObject(String sql, Object[] params, final boolean toUpper) { logger.info("save sql:" + sql); if (params != null && params.length > 0) { for (Object o : params) { logger.info("value:" + o); } } return jdbcTemplate.query(sql, params, new ResultSetExtractor<JSONObject>() { @Override public JSONObject extractData(ResultSet resultSet) throws SQLException, DataAccessException { ResultSetMetaData rsd = resultSet.getMetaData(); int clength = rsd.getColumnCount(); String columnName; try { if (resultSet.next()) { JSONObject jo = new JSONObject(); for (int i = 0; i < clength; i++) { columnName = rsd.getColumnLabel(i + 1); columnName = toUpper ? columnName.toUpperCase() : columnName.toLowerCase(); jo.put(columnName, resultSet.getObject(i + 1)); } return jo; } } catch (Exception e) { } return null; } }); } /** * 說明:插入數據 * * @param sql * @param params * @return */ public long insert(final String sql, final Object[] params) { logger.info("save sql:" + sql); if (params != null && params.length > 0) { for (Object o : params) { logger.info("value:" + o); } } KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(new PreparedStatementCreator() { public PreparedStatement createPreparedStatement(Connection con) throws SQLException { PreparedStatement ps = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); if (params == null) { return ps; } Object op = null; int alength = params.length; for (int i = 0; i < alength; ++i) { op = params[i]; StatementCreatorUtils.setParameterValue(ps, i + 1, -2147483648, op); } return ps; } }, keyHolder); return keyHolder.getKey().longValue(); } /** * 添加 * Edited * * @param * @return int * <p> * 注冊保存的save1/,勿調用!!! */ public long save(final String sql, Object[] params) { logger.info("save sql:" + sql); if (params != null && params.length > 0) { for (Object o : params) { logger.info("value:" + o); } } KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); Blob b = connection.createBlob(); return ps; } }, keyHolder); return keyHolder.getKey().longValue(); } /** * 修改 * Edited * * @param * @return int */ public int update(String sql) { int flag = jdbcTemplate.update(sql); return flag; } /** * 說明:更新 * * @param sql * @param params * @return */ public int update(String sql, Object[] params) { logger.info("save sql:" + sql); if (params != null && params.length > 0) { for (Object o : params) { logger.info("value:" + o); } } return jdbcTemplate.update(sql, params); }