• jdbcTemplate进行CRUD,查询结果转json


    通过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);
        }
    View Code
  • 相关阅读:
    C#中Socket多线程编程实例
    VBA之Range对象在Excel单元格赋值示例
    c# 怎么关闭Excel
    C#结构体定义的详解
    asp.net C#调用mencoder处理视频的方法
    Win7系统找回“显示桌面”按钮,Win7系统将显示桌面添加到开始按钮旁
    使用 Visual Studio .NET 客户端执行自动化功能后不退出 Office 应用程序
    c#操作excel后关闭excel.exe的方法
    asp文件的连接11种方法
    Excel对象模型的一些使用心得(C#)
  • 原文地址:https://www.cnblogs.com/hhhd/p/6606041.html
Copyright © 2020-2023  润新知