使用传统的JDBC编写数据库操作返回JSONArray
1.首先编写一个Dao接口类:
public interface DataInterfaceService {
public JSONArray getFriends(String filter,int nowpage,int pagesize) throws SQLException;
}
2.编写一个实现类接口:
@Service
public class DataInterfaceServiceImpl implements DataInterfaceService {
@Override
public JSONArray getFriends(String filter, int nowpage, int pagesize)
throws SQLException {
// TODO Auto-generated method stub
return dataItf.friends(ConnectionFactory.getInstance().getConnection(), filter, nowpage, pagesize);
}
}
3.编写普通方法实现类:
public class PublicData {
public JSONArray friends(Connection conn, String filter,int nowpage,int pagesize)
throws SQLException {
String sql =”“;
sql = “select * from slsw.dbo.V_FRIENDS where 1=1 And erp_id =1 And (pagerank between “+((nowpage-1)*pagesize+1)+” And “+nowpage*pagesize+” )”;
Statement st = conn.createStatement();
JSONArray rs = RstToList.resultSetToJson(st.executeQuery(sql));
if(st!=null){
st.close();
}
if(conn!=null){
conn.close();
}
return rs;
}
}
4.编写一个ResultSet工具类:
public class RsUtile {
public static JSONArray resultSetToJson (ResultSet rs) {
// json数组
JSONArray array = new JSONArray();
try {
// 获取列数
ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();
while (rs.next()) {
JSONObject jsonObj = new JSONObject();
// 遍历每一列
for (int i = 1; i <= columnCount; i++) {
String columnName =metaData.getColumnLabel(i);
String value = rs.getString(columnName);
jsonObj.put(columnName, value);
}
array.add(jsonObj);
}
}catch (SQLException e){
///
}
return array;
}
}
5.最后只需要在接口中调用 getFriends(String filter,int nowpage,int pagesize);就可以返回你在数据库操作语句中所需要查询的东西了
总结:
好处:这样操作可以根据你想查询返回的任何数据,如:在多表查询时,需要返回多张表的字段,就可以很方便的从集合中取到。
缺点:与框架相比是一个非常low的写法,