先贴出代码,后续补充自己的思路、配置文件、使用方式:
/**
*
* 数据查询
*
*/
@Override
public List<?> queryObject(List<Map<String, Object>> params,
String tableName) {
List<Object> objectList = new ArrayList<Object>();
StringBuilder sql = new StringBuilder("SELECT * FROM " + tableName
+ " WHERE 1=1");
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null; try {
connection = DBConnection.getConnection();
if (params != null && params.size() > 0) {
for (int i = 0; i < params.size(); i++) {
Map<String, Object> map = params.get(i);
sql.append(" AND " + map.get("name") + " "
+ map.get("rela") + " " + map.get("value") + " ");
}
}
preparedStatement = connection.prepareStatement(sql.toString()); resultSet = preparedStatement.executeQuery();
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
// 获取数据列数
int columnsCount = resultSetMetaData.getColumnCount();
Field field = null;
Object object = null;
while (resultSet.next()) {
/**
* 获取实例化对象
*/
object = objectClass.newInstance(); String columnName = null;
String columnTypeName = null;
String columnValue = null; for (int i = 1; i <= columnsCount; i++) {
columnName = resultSetMetaData.getColumnName(i);
columnTypeName = resultSetMetaData.getColumnTypeName(i);
columnValue = resultSet.getString(i);
field = object.getClass().getDeclaredField(columnName);
field.setAccessible(true);
switch (columnTypeName) {
case "INT":
field.set(object, Integer.parseInt(columnValue));
break;
case "VARCHAR":
field.set(object, columnValue);
break;
case "FLOAT":
field.set(object, Float.parseFloat(columnValue));
break;
case "Date":
field.set(object,
new SimpleDateFormat().parse(columnValue));
break;
} }
objectList.add(object); } } catch (SQLException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} finally {
DBConnection.close(connection, preparedStatement, resultSet);
}
return objectList;
}

基本流程:(这张表结合源码备注理解应该问题不大)如果看不清楚,复制图片地址在新窗口中查看

最新文章

  1. Rafy 领域实体框架 - 公司内部培训视频
  2. tornado中将cookie值设置为json字符串
  3. sql server 跨数据库插入数据
  4. mysql 远程连接 2003 Can&#39;t connect to MySQL server (10060)
  5. Asp.Net HttpApplication 事件汇总
  6. C# 操作NPOI导入导出
  7. NIO Socket编程实例
  8. 实战DeviceIoControl 之六:访问物理端口
  9. 部署Java Web项目报错(二)
  10. OpenCV4.1.0实践(1) - 环境配置及使用
  11. Django学习目录
  12. Node.js 多版本安装
  13. Tor真的匿名和安全吗?——如果是http数据,则在出口节点容易被嗅探明文流量,这就是根本问题
  14. django by example 第五章 No module named &#39;sorl-thumbnail&#39;
  15. AngularJS表格神器“ui-grid”的应用
  16. JDK1.8 HashMap 扩容 对链表(长度小于默认的8)处理时重新定位的过程
  17. LaTeX文章结构
  18. Extjs4.x Ext.tree.Panel 过滤Filter以及trigger field的使用
  19. 谈谈我对Ui设计师的一些观点
  20. 2018.07.07 洛谷 P3939 数颜色(主席树)

热门文章

  1. vue2.0+wechat
  2. 一张图理解is_nll isset empty
  3. 修改(python) mysql 数据库 使其可以支持插入中文
  4. TCP/IP 详解卷一 - TCP CWR、ECE、URG、ACK、PSH、RST、SYN、FIN控制位
  5. c#子线程执行完怎么通知主线程
  6. Linux下几种RTP协议实现的比较和JRTPLIB编程讲解
  7. Linux环境下,开启tomcat时报transport error 202: bind failed: 地址已在使用
  8. Centos6.5安装上传下载工具
  9. 使用cmd命令行方式登录ftp上传下载数据
  10. Spring 学习十四 Spring security安全