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 为前端服务,直接 ...
随机推荐
- spring aop之父子容器
需求;项目对外提供接口,要求每个对外接口都要进行token认证. 解决办法:写一个token认证的工具类,在每个需要认证的接口方法开始的地方,调用工具类中的token认证方法. 问题:因为要满足指定条 ...
- spark日志+hivesql
windows本地读取hive,需要在resource里面将集群中的hive-site.xml下载下来. <?xml version="1.0" encoding=" ...
- vue中如何去掉空格
一.问题 vue中当用户提交表单时,有的数据需要去掉前后空格然后再向后端发送. 二.解决方法 首先可以使用v-model.trim这个v-model修饰符去解决它,但是当用户输入\u200B时,这个方 ...
- 匿名函数lambda和map函数
一.map函数,实现迭代操作 map(f1,x) f1为函数的名称(不加括号),x为map的参数,示例如下: def add(a): return a+10 print map(add,[1,2,3] ...
- 使用Idea部署SSM项目后,访问路径为url:8080/项目名_war_exploded的解决方案
在tomcat配置页的Deployment下,修改Application context为/,即可直接使用url:8080访问项目主页.
- homebrew学习(三)之homebrew命令
安装homebrew: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/m ...
- jfinal layui 多选传值问题整理
使用layui在显示数据表格进行多选的时候遇到的几个问题: 1.增加监听,让你的数据表格可以进行复选. layui.use('table', function(){ var $ = layui.jqu ...
- windows挂载nfs
注意:Win10 Creators Update前只有Win10企业版可以挂载NFS, Creators Update后专业版也可挂载NFS了. 安装 按Win+R输入OptionalFeatures ...
- SQL的基本操作(三)
Hive基本SQL操作 Hive DDL(数据库定义语言) 1.数据库的基本操作 --展示所有数据库 show databases; --切换数据库 use database_name; /*创建数据 ...
- 最简洁地说明常用的git指令(1)
前提条件,在github上面创建一个仓库,注册好git账号,下面开始 首先在项目文件夹下面,如果有安装git则邮件gitbash进入控制台.另一种方式是使用IDEA打开你要上传的工程,在里面的命令行下 ...