java 封装查询sql_SQL查询数据封装JavaBean对象

public static List getListBySql(String sql, Class cls){

List list = new ArrayList();

Connection connection =null;

Statement stmt =null;

ResultSet rs =null;

try {

connection = getConnection();

stmt = connection.createStatement();

rs = stmt.executeQuery(sql);

while (rs.next()) {

Object obj = getObject(rs, cls);

list.add(obj);

}

}catch (Exception e) {

e.printStackTrace();

String sWord = " sql:" + sql;

sWord += " 错误信息:" + e.getLocalizedMessage();

PayMd5Utils.logResult(logpath,sWord);

throw new RuntimeException("#执行出错:"+e.getLocalizedMessage());

}finally{

closeResultSet(rs);

closeStatement(stmt);

closeConnection(connection);

}

return list;

}

private static Object getObject(ResultSet rs, Class cls) throws SQLException, IllegalArgumentException, IllegalAccessException, InstantiationException {

Object object = null;

Field[] fields = cls.getDeclaredFields();

ResultSetMetaData metaData = rs.getMetaData();

int columnCount = metaData.getColumnCount();

for (int i = 1; i <= columnCount; i++) {

String columnName = metaData.getColumnName(i);

Field field = getField(fields, columnName);

if (field != null) {

if (object==null) {

object=cls.newInstance();

}

field.setAccessible(true);

Object value = rs.getObject(field.getName());

setFieldValue(object, value, field);

}

}

return object;

}

private static Field getField(Field[] fields, String columnName) {

for (Field field : fields) {

if (columnName.toUpperCase().equals(field.getName().toUpperCase())) {

return field;

}

}

return null;

}

private static void setFieldValue(Object obj, Object value, Field field)

throws IllegalArgumentException, IllegalAccessException {

if (value == null) {

return;

}

if (field.getType() == Long.class) {

field.set(obj, StringUtil.toLong(value));

} else if (field.getType() == Double.class) {

field.set(obj, StringUtil.toDouble(value));

} else if (field.getType() == Integer.class) {

field.set(obj, StringUtil.toInteger(value));

} else if (field.getType() == Date.class) {

field.set(obj, new Date());

} else {

field.set(obj, StringUtil.toString(value));

}

}

PL&sol;SQL查询oracle数据库对象

dictionary 全部数据字典表的名称和解释,它有一个同义词dict,dict_column 全部数据字典表里字段名称和解释 如果我们想查询跟索引有关的数据字典时,可以用下面这条SQL语句: se ...

使用jbc查询数据封装成对象的工具类

适用于获取Connection对象的util package com.briup.myDataSource; import java.io.FileReader; import java.io.Inp ...

Hibernate-原生SQL查询

HQL尽管容易使用,但是在一些复杂的数据操作上功能有限.特别是在实现复杂的报表统计与计算,以及多表连接查询上往往无能为力,这时可以使用SQL(Native SQL)实现HQL无法完成的任务. 1.使用 ...

sql server查询可编程对象定义的方式对比以及整合

本文目录列表: 1.sql server查看可编程对象定义的方式对比 2.整合实现所有可编程对象定义的查看功能的存储dbo.usp_helptext2 3.dbo.helptext2的选择性测试 4. ...

hibernate将本地SQL查询结果封装成对象

hibernate将本地SQL查询结果封装成对象 不知道大家有没有碰过这种情况,迫于很多情况只能用native SQL来查询(如:复杂统计等),然而使用native查询后,结果会被放到object里, ...

SQL Server中查询用户的对象权限和角色的方法

--SQL Server中查询用户的对象权限和角色的方法 -- 查询用户的object权限 exec sp_helprotect NULL, 'sa' -- 查询用户拥有的role exec sp_h ...

笔面试复习(spring常用&period;jar包&sol;事务&sol;控制反转&sol;bean对象管理和创建&sol;springMVC工作原理&sol;sql查询)

###spring常用jar包1.spring.jar是包含有完整发布模块的单个jar包.2.org.springframework.aop包含在应用中使用Spring的AOP特性时所需要的类.3.o ...

集合对象与自定义javabean对象接收数据库查询的数据 (基础知识扫盲)

一.集合对象(List,Map,数组)等对象接收数据库查询的记录,如果没有一条记录,就得到的内容为空的集合,不是null: 例如:List查不到记录得到的就是size=0的list 二.自定义的jav ...

Hibernate纯sql查询VO对象封装

hibernate 纯sql查询返回结果集(未关联映射)组装VO的问题//须保证别名字段与Vo字段一致 //引号中为vo对象属性需与sql查询返回字段一致.addScalar("chname ...

随机推荐

php mysql支持emoji表情方案

将emoji转换成utf8 然后存储到数据库,但是 效率低 public function rrr($text) { $text = 'a

JDK的帮助文档

1.JDK1.8在线api,英文版 https://docs.oracle.com/javase/8/docs/api/

tcp ip参数详解

http://www.cnblogs.com/digdeep/p/4869010.html 1. TCP/IP模型 我们一般知道OSI的网络参考模型是分为7层:“应表会传网数物”——应用层,表示层,会 ...

cf D&period; Maximum Submatrix 2

http://codeforces.com/contest/376/problem/D 题意:给你一个矩阵,可以随意排列n行的次序,然后找出全部含有1的子矩阵.输出1的个数. 思路:c[i][j]表示 ...

淘淘商城&lowbar;day03&lowbar;课堂笔记

今日大纲 实现商品的编辑 实现商品的规格参数功能 搭建前台系统 实现首页商品类目的显示 商品的编辑 数据的编辑核心是:数据回显. 编辑按钮事件 判断选中的行数 弹出window 加载编辑页面,在页面加 ...

Docker学习笔记 - Docker的数据卷容器

一.什么是数据卷容器 如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器. 数据卷容器:用于容器间的数据共享,主动挂载宿主机目录,用于其他容器挂载和共享. 二.数据卷容器的操作 1.创建 ...

SpringBoot 配置 跨域支持

跨域资源共享(CORS,请求协议,请求地址,请求端口三者必须相同才是同一服务器,否则都要进行跨域操作)标准新增了一组 HTTP 首部字段,允许服务器声明哪些源站有权限访问哪些资源.另外,规范要求,对那 ...

Mac上,Apache启动正常,却无法访问localhost和127&period;0&period;0&period;1

mac系统,之前一直好好的,今天突然localhost以及127就突然打不开了.显示拒绝访问. 各种方法都试过了,不是端口占用, 不是日志文件缺失,任何情况都不是. 想了想,之前有升级过PHP从5升级 ...

unix scp命令&lpar;两个unix系统传输文件&rpar;

1.安装openssh-server模块 sudo apt-get install ssh openssh-server 2.使用命令 将本地文件拷贝到远程 scp 文件名 –用户名@计算机IP或者计 ...

JEECG新版UI规划,主要提供H5方案(采用主流技术)

JEECG 结合当前主流的UI技术,在新版3.7.4 即将推出新的UI方案,主要采用Bootstrap,Vue技术.同时提供代码生成器模板(单表.一对多),快速生成你喜好的模板代码. 版本一: Boo ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值