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);
    }
jdbcTemplate进行CRUD,查询结果转json的更多相关文章
- JdbcTemplate实现CRUD操作
		------------------siwuxie095 JdbcTemplate 实现 CRUD 操作 1.J ... 
- 使用TSQL查询和更新 JSON 数据
		JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ... 
- Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据
		Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据 1. 1. 配置条件字段@Conditional 1 1 2. 2. 配置条件字段 ... 
- Atitit.列表页and查询条件的最佳实践(1)------设定搜索条件and提交查询and返回json数据
		Atitit.列表页and查询条件的最佳实践(1)------设置查询条件and提交查询and返回json数据 1. 1. 配置条件字段@Conditional 1 1 2. 2. 配置条件字段显示类 ... 
- 自定义mysql类用于快速执行数据库查询以及将查询结果转为json文件
		由于每次连接数据库进行查询比较麻烦,偶尔还需要将查询结果转为json格式的文件, 因此暂时定义一个mysql的类,将这些常用的方法进行封装,便于直接调用(代码如下,个人用,没写什么注释). 注:导入了 ... 
- SQL Server中将查询结果转换为Json格式脚本
		这篇文章主要介绍了SQL Server中将查询结果转换为Json格式脚本分享,本文直接给出实现代码,需要的朋友可以参考下 原文地址:http://www.jb51.net/article/61462. ... 
- python测试开发django-15.查询结果转json(serializers)
		前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse ... 
- mormot数据库连接+查询+序列为JSON
		mormot数据库连接+查询+序列为JSON uses SynDB,SynCommons, SynDBRemote, SynOleDB, SynDBMidasVCL, mORMotMidasVCL p ... 
- 在SQL中直接把查询结果转换为JSON数据
		下面这篇中,已经有准备一些数据: <MS SQL server对象类型type>https://www.cnblogs.com/insus/p/10903916.html 为前端服务,直接 ... 
随机推荐
- maven 报错 -source 1.5 中不支持 diamond 运算符
			maven 执行install 报-source 1.5 中不支持 diamond 运算符 解决办法, 指定编译版本 <build> <plugins> <plugin& ... 
- Linux 查看文件内容(8)
			我们知道在图形界面上查看文件内容只需要双击打开就好,那么在终端窗口里怎么查看文件内容呢?显然是需要能有一个命令能把文件内容显示在终端界面上. 查看文件内容主要有两个命令,分别是 cat 和 more, ... 
- Linux系统装mycat
			最近在Linux系统中装载了一下mycut,记录过程以及所遇到的异常 首先是mycut的压缩包,直接放到linux中解压即可 链接:https://pan.baidu.com/s/1qo7z4tNvk ... 
- 洛谷 P2023 维护序列 题解
			题面 注意一个细节,查询和更新都需要pushdown(); #include <bits/stdc++.h> #define int long long using namespace s ... 
- Django查询数据库返回字典dict数据
			个人观点: 个人认为,在Django项目中, 开发团队为了让使用该框架的用户都使用自带的序列化功能,从而让框架中的SQL返回值很不直观,对于直接使用SQL语句的用户很犯难. 解决: from djan ... 
- js中index()的四种经典用法(转https://blog.csdn.net/superit401/article/details/51726826)
			<!doctype html><html lang="en"> <head> <meta charset="UTF-8" ... 
- java向word中插入Excel附件
			1.word中插入对象的原理 编辑word,向word中插入图片.EXCEL.WORD等附件,再将word保存为xml格式,通过XML查看工具打开xml格式的word的源码,通过对比源码, 可以发现平 ... 
- decode与case when 函数
			百度百科: DECODE函数,是ORACLE公司的SQL软件ORACLE PL/SQL所提供的特有函数计算方式,以其简洁的运算方式,可控的数据模型和灵活的格式转换而闻名. DECODE 中的if-th ... 
- jqery实现10X10的表格,双击消失
			<script type="text/javascript"> $(document).ready(function(){ //循环拼接html s="&qu ... 
- numpy.random.uniform(记住文档网址)
			http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.uniform.html#numpy.random.uniform h ... 
