1.查询数据库
public <T> List<T> Select(String sql, Class<T> mode){
List<T> reList = new ArrayList<T>();
T reT = null;
ResultSet rs = null;
ResultSetMetaData rsd;
try {
rs = this.conn.createStatement().executeQuery(sql);
int columnCount = 0;
while(rs.next()){
Map<String, Object> map = new HashMap<String, Object>();
rsd = rs.getMetaData();
columnCount = rsd.getColumnCount();
for (int i = 1; i <= columnCount; i++) {
map.put(rsd.getColumnName(i), rs.getObject(i));
}
reT = mode.newInstance();
for(Map.Entry<String, Object> ent:map.entrySet()){
ReflectionUtils.setFieldValue(reT, ent.getKey(), ent.getValue());
}
reList.add(reT);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
}
}
}
return reList;
}
2.通过反射取值(核心代码)
/**
* 直接设置对象属性值, 忽略 private/protected 修饰符, 也不经过 setter
*
* @param object
* @param fieldName
* @param value
*/
public static void setFieldValue(Object object, String fieldName, Object value) {
Field field = getDeclaredField(object, fieldName);
if (field != null) {
makeAccessible(field);
try {
field.set(object, value);
} catch (Exception e) {
}
}
}
/**
* 使 filed 变为可访问
*
* @param field
*/
public static void makeAccessible(Field field) {
if (!Modifier.isPublic(field.getModifiers())) {
field.setAccessible(true);
}
}
/**
* 循环向上转型, 获取对象的 DeclaredField
*
* @param object
* @param filedName
* @return
*/
public static Field getDeclaredField(Object object, String filedName) {
for (Class<?> superClass = object.getClass(); superClass != Object.class; superClass = superClass.getSuperclass()) {
try {
return superClass.getDeclaredField(filedName);
} catch (NoSuchFieldException e) {
// Field 不在当前类定义, 继续向上转型
}
}
return null;
}
3.调用示例
List<Mode> modeList = (List<Mode>) oracleAPI.Select(sql, Mode.class);
4.模型
package Modes;
public class Mode {
private String NAME;
private BigDecimal ID; //数字要用这个 int无法赋值 oracle number字段
public void setNAME(String NAME) {
NAME= NAME;
}
public String getNAME() {
return NAME;
}
public void setID(BigDecimal ID) {
ID= ID;
}
public String getID() {
return ID;
}
}
分享到:
相关推荐
这个工程是使用 java 来使用反射的原理读取 *.proproies 资源文件中的一些配置信息。利用此方法可以在没有使用框架的情况下...如:可以将一些数据库配置信息,重要信息写入到资源文件中,在使用反射来读取这些信息。
主要介绍了利用JAVA反射,读取数据库表名,自动生成对应实体类的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
C#读取SQL数据库,生成SQL语句; 可以是2000、2005的库,为了简单,写在了一个ini文件里,就是数据库的链接字符串,任意修改,点击运行即可; 自己写着用的,纯SQL语句,字段太多了,就写着太费劲了,闲来无事,就写...
UIImage 转为 NSData 以 bytes 模式 直接插入到 数据库 正在做 可设置模式 数据库保存图片名称 图片放在document 目录下 NSData 目前也是 直接插入到数据库 后面可能会跟图片一样处理 数据库 只保存名称 ...
使用反射技术获取Bean类信息,使用Microsoft SQL Server Compact Edition数据库,使用VS2008编程工具。
C# SQL Server数据库操作DLL,提供数据库链接、读取DataSet、DataTable,执行添加、修改、删除数据。附源码项目和dll文件
利用Treeview自动生成菜单,利用反射在Tabcontrol中产生NewTabPage,打开窗口内容。在NewTabPage上画出关闭按钮,点击关闭。
IOS 反色属性 自动插入到数据库 读取 修改 删除 http://blog.csdn.net/li6185377/article/details/8191788
C#,利用反射动态加载dll。dll需要在sql server数据库里面进行维护,加载的时候先去读取数据库里面的信息,查到dll的名称。并根据名称去程序里面直接去抓取,并显示在界面上
整理了框架底层是按技术(包括反射,XML,设计模式)及Redis缓存数据库技术。 Java 反射机制是在运行状态中,对于任意一个类,都能够获得这个类的所有属性和方法,对于任意一个对象都能够调用它的任意一个属性和方法...
从数据库元数据访问,到建表,创建约束,创建sequence等各种DDL操作进行了封装,用户无需编写各种SQL,可以直接通过API操作数据库结构。 尤其是ALTER TABLE等修改数据库的语句,各种不同的RDBMS都有较大语法差异。...
使用反射,简单工厂模式实现jdbc数据库操作,支持三种数据库oracle10g,mysql,sqlsever,作了简单的jndi操作,以及xml读取的应用,喜欢反射的同学可以看看
1、SQL Server:针对SQL Server的数据反射,该方式可以读取数据库内表(字段)的描述,如果你用的是SQL Server建议采用该方式 2、OLE DB: 支持OLE DB方式连接大部份数据库 注意:1、请先解压缩后运行,否则可能出错 2...
我的koa包,集成了ts,使用了装饰器的特性,mysql数据库,自动读取路由 中间件 首先理解一点:中间件一定是一个函数,通过app.use(xxx)来调用中间件, use的顺序也会影响中间件的执行 log4js 这是日志中间件,做日志...
* 使用反射机制,读取Class中的字段信息 * 使用反射机制,对Class中的方法进行调用 * 以JSON与POJO的转换为例,演示反射机制的运用 * 自定义注解的语法 * 使用反射机制,读取类中的注解信息 * 以反射和注解...
ServletMVC源码 源码描述: 一、源码介绍 通过java的反射技术实现... 自定义注解,dom4j读取配置文件,反射读取路由,实现了登录功能的逻辑,对理解MVC原理有一定帮助 三、注意事项 开发环境为jdk1.8,无数据库
做一个WebService,把前台和后台分离开,在ebService上得到数据是datatable,利用序列化转换成xml进行传输,再在客户端反序列化成datatable,在其中用到了反射,自定义属性等
3、抽象工厂设计模式加反射技术来创建数据库访问层接口,可以扩展完全支持多种数据库, 现在可以完全支持SQL Server和Access数据库,序列化技术来保存和读取配置,更加方便实用 4、在操作表格记录的时候可以选择多...
3、抽象工厂设计模式加反射技术来创建数据库访问层接口,可以扩展完全支持多种数据库, 现在可以完全支持SQL Server和Access数据库,序列化技术来保存和读取配置,更加方便实用 4、在操作表格记录的时候可以选择多...
hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。 4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。