0
点赞
收藏
分享

微信扫一扫

java jdbc template 查询返回 JSONObject的方法


JSONObjectRowMapper.java

package com.qcd.db;

import org.springframework.jdbc.core.RowMapper;
import com.alibaba.fastjson.JSONObject;
import java.io.Serializable;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

public class JSONObjectRowMapper implements RowMapper<JSONObject>, Serializable {

public JSONObjectRowMapper(){
super();
}

@Override
public JSONObject mapRow(ResultSet resultSet, int rowNum) throws SQLException {
// 数据库中每行的数据对象
JSONObject rowObj = null;
try {
// ResultSetMetaData 有关 ResultSet 中列的名称和类型的信息。
ResultSetMetaData rsmd = resultSet.getMetaData();
// 每读取一行,新建对象
// 获取表列数
int columnCount = rsmd.getColumnCount();
// 初始化的时候就定好长度可有效提高性能, 参数 true 默认排序有助于签名验证
rowObj = new JSONObject(columnCount,true);

// 列从1开始,要等于
for (int i = 1; i <= columnCount; i++) {
// 获取列名
String columnName = rsmd.getColumnLabel(i);
// 取数据
Object value = resultSet.getObject(columnName);
// 添加到rowObj中
rowObj.put(columnName, value);
}
} catch (SQLException e) {
e.printStackTrace();
}
return rowObj;
}
}

使用方法

@Autowired 
@Qualifier("local_JdbcTemplate")
public NamedParameterJdbcTemplate local_JdbcTemplate;

void Main(){
String sql ="SELECT * from user limit :startrow, :pagesize";
MapSqlParameterSource pars = new MapSqlParameterSource();
pars.addValue("startrow", startrow);
pars.addValue("pagesize", pagesize);
List<JSONObject> reportdatas = local_JdbcTemplate.query(sql, pars,new JSONObjectRowMapper());


}

如果你需要获得的 字段名 严格按照字母排序, 可以使用下面这个版本.

package com.qcd.db;


import org.springframework.jdbc.core.RowMapper;

import com.alibaba.fastjson.JSONObject;

import java.io.Serializable;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Comparator;

public class JSONObjectOrderRowMapper implements RowMapper<JSONObject>, Serializable {


public JSONObjectOrderRowMapper (){
super();
}


@Override
public JSONObject mapRow(ResultSet resultSet, int rowNum) throws SQLException {
// 数据库中每行的数据对象
JSONObject rowObj = null;
try {
// ResultSetMetaData 有关 ResultSet 中列的名称和类型的信息。
ResultSetMetaData rsmd = resultSet.getMetaData();
int columnCount = rsmd.getColumnCount();
// 初始化的时候就定好长度可有效提高性能, 默认排序有助于签名验证
rowObj = new JSONObject(columnCount,true);
//重新排序key值
ArrayList<String> sortarray = new ArrayList<String>();
for (int i = 1; i <= columnCount; i++) {
sortarray.add(rsmd.getColumnLabel(i));
}
sortarray.sort(Comparator.naturalOrder());

for (int i = 0; i < columnCount; i++) {
String columnName = sortarray.get(i);
rowObj.put(columnName, resultSet.getObject(columnName));
}
} catch (SQLException e) {
e.printStackTrace();
}
return rowObj;
}
}



举报

相关推荐

0 条评论