通过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的更多相关文章

  1. JdbcTemplate实现CRUD操作

    ------------------siwuxie095                                     JdbcTemplate 实现 CRUD 操作         1.J ...

  2. 使用TSQL查询和更新 JSON 数据

    JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...

  3. Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据

    Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据 1. 1. 配置条件字段@Conditional 1 1 2. 2. 配置条件字段 ...

  4. Atitit.列表页and查询条件的最佳实践(1)------设定搜索条件and提交查询and返回json数据

    Atitit.列表页and查询条件的最佳实践(1)------设置查询条件and提交查询and返回json数据 1. 1. 配置条件字段@Conditional 1 1 2. 2. 配置条件字段显示类 ...

  5. 自定义mysql类用于快速执行数据库查询以及将查询结果转为json文件

    由于每次连接数据库进行查询比较麻烦,偶尔还需要将查询结果转为json格式的文件, 因此暂时定义一个mysql的类,将这些常用的方法进行封装,便于直接调用(代码如下,个人用,没写什么注释). 注:导入了 ...

  6. SQL Server中将查询结果转换为Json格式脚本

    这篇文章主要介绍了SQL Server中将查询结果转换为Json格式脚本分享,本文直接给出实现代码,需要的朋友可以参考下 原文地址:http://www.jb51.net/article/61462. ...

  7. python测试开发django-15.查询结果转json(serializers)

    前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse ...

  8. mormot数据库连接+查询+序列为JSON

    mormot数据库连接+查询+序列为JSON uses SynDB,SynCommons, SynDBRemote, SynOleDB, SynDBMidasVCL, mORMotMidasVCL p ...

  9. 在SQL中直接把查询结果转换为JSON数据

    下面这篇中,已经有准备一些数据: <MS SQL server对象类型type>https://www.cnblogs.com/insus/p/10903916.html 为前端服务,直接 ...

随机推荐

  1. 【转帖】Spring Boot 为什么这么火?

    Spring Boot 为什么这么火? 2019/06/03 http://www.ityouknow.com/springboot/2019/06/03/spring-boot-hot.html 没 ...

  2. Luogu P4602 [CTSC2018]混合果汁

    题目 把果汁按美味度降序排序,以单价为下标插入主席树,记录每个节点的\(sum\)果汁升数和\(val\)果汁总价. 每次询问二分最小美味度,查询美味度大于等于\(mid\)的总体积为\(L\)的最低 ...

  3. Python自学笔记之计算机基础

    osi七层协议应用层-表示层-会话层-传输层-网络层-数据链路层-物理层 无线网协议 ethernet 物理层:网线,光纤 数据链路层:arp协议 mac地址,广播 在广播域内传播 网络层:ip地址标 ...

  4. Fire Net HDU - 1045 (二分图匹配)

    题意: 给出一张图,图中'X'表示wall,'.'表示空地,可以放置blockhouse同一条直线上只能有一个blockhouse,除非有wall 隔开,问在给出的图中最多能放置多少个blockhou ...

  5. Flask运行时指定端口

    在项目入口文件server.php中,有如下代码 if __name__ == '__main__': app.run(debug=True,port=8000) 但是在进入虚拟机中运行 flask ...

  6. 096、运行第一个Service (Swarm03)

    参考https://www.cnblogs.com/CloudMan6/p/7874609.html   上一节我们部署好了 Swarm 集群,下面部署一个运行httpd镜像的service进行演示 ...

  7. jstl用法 简介

    <c:choose> <c:when test="${salary <= 0}"> 太惨了. </c:when> <c:when t ...

  8. 深入Spring Boot:那些注入不了的 Spring 占位符 ( ${} 表达式 )

    Spring里的占位符 spring里的占位符通常表现的形式是: 1 2 3 <bean id="dataSource" destroy-method="close ...

  9. vue——echarts更换主题

    链接:https://blog.csdn.net/Sunshine0508/article/details/90067437 //等配置安装好了以后 在main.js里引入echarts主题的js,一 ...

  10. 下载并安装eclipse

    一. 下载eclipse 1. 进入eclipse官网——www.eclipse.org 2. 点击“DOWNLOAD”,进入下载界面 3. 点击“Download Packages”,选择所需ecl ...