利用反射实现类通用的DAO层
public void add(Object object) throws SQLException {
ResultSet rs=null;
PreparedStatement ps=null;
Connection con=null;
//获取表名
Class c= object.getClass();
String className=c.getName();
String declareName=className.substring(className.lastIndexOf(".")+1);
//拼接sql语句开始
Field[] fields =c.getDeclaredFields();
StringBuilder s1=new StringBuilder("insert into ");
s1.append(declareName);
StringBuilder s2=new StringBuilder(" values(");
for (int i = 0; i < fields.length; i++) {
System.out.println(fields[i].getName());
if(i>0){
s2.append(",");
}
s2.append("?");
}
s1.append(s2+")");
System.out.println(s1);
//sql语句完成
try {
con=JdbcUtils.getConnection();
ps=con.prepareStatement(s1.toString());
//进行循环比较来实现prepareStatement的setObject方法
//获取的是所有该类自己声明的方法
Method[]m= c.getDeclaredMethods();
for (Method method : m) {
String mName=method.getName();
//这里挑出get方法
if(mName.startsWith("get")){
for (int i = 0; i < fields.length; i++) {
//.equalsIgnoreCase()
if(fields[i].getName().equalsIgnoreCase(mName.substring(3))){
ps.setObject(i+1, method.invoke(object));
}
}
}
}
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
JdbcUtils.close(rs, ps, con);
}
}
基本上利用类的字节码的反射的getName获取类型名 getDeclaredFields()方法获取该类型声明的参数 getDeclaredMethod()方法获取该类声明的方法名
来实现类通用的...
初学java......0.0
利用反射实现类通用的DAO层的更多相关文章
- java利用反射获取类的属性及类型
java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...
- controller层负责创建类传递类给service;service层负责逻辑编写调用dao层 将编写后的类传递到dao层,保证事务的正确性;dao层负责数据的持久化
controller层负责创建类传递类给service:service层负责逻辑编写调用dao层 将编写后的类传递到dao层,保证事务的正确性:dao层负责数据的持久化
- Java利用反射取得类的所有信息
Java中可以利用反射获取类的名称.构造函数.属性.方法.也就是说可以通过反射可以取得类的所有信息(不管该成员是否封装为private). 如有下面的Dept类定义: package org.lyk. ...
- java利用反射访问类的私有(private)属性及方法
Java语言中,在一个类中,为了不让外界访问到有的属性和方法,通常将其设置为private,用正常的方式(对象名.属性名,对象名.方法名)将无法访问此属性与方法,但有没有其他方法可以访问呢?答案是有的 ...
- 利用JAVA反射机制设计通用的DAO
利用JAVA反射机制设计一个通用的DAO 反射机制 反射机制指的是程序在运行时能够获取自身的信息.在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息. 反射机制创建类对象 ...
- 泛型理解及应用(二):使用泛型编写通用型Dao层
相信目前所有的IT公司网站在设计WEB项目的时候都含有持久层,同样地使用过Hibernate的程序员都应该看过或者了解过Hibernate根据数据库反向生成持久层代码的模板.对于Hibernate生成 ...
- java利用反射调用类的某个方法
java利用反射机制 可以动态调用某个类的某个方法,在 扩展系统功能或提供对外接口时经常用的到. 代码如下: 打印类Print.java package com.test.reflct; /** * ...
- .NET C#利用反射获取类文件以及其中的方法&属性 并获取类及方法上的特性
了解C#特性类并声明我们自己的特性类[AttributeTest]代码如下 using System; namespace AttributeTest { /* 特性说明 特性本质是一个继承和使用了系 ...
- C# 利用反射查看类的信息
using System; using System.Collections; using System.Collections.Generic; using System.Reflection; u ...
随机推荐
- JQuery源码解析-- 对象的创建
使用 $("a") 返回的对象就不再是一个简单的DOM对象了,而是一个复杂的JQuery对象. 那么JQuery是怎么创建对象的. 为了便于分析,我将JQuery中复杂的代码简化了 ...
- Lucene教程(转)
Lucene教程 1 lucene简介1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来 ...
- Coursera Machine Learning : Regression 多元回归
多元回归 回顾一下简单线性回归:一个特征,两个相关系数 实际的应用要比这种情况复杂的多,比如 1.房价和房屋面积并不只是简单的线性关系. 2.影响房价的因素有很多,不仅仅是房屋面积,还包括很多其他因素 ...
- 前端工作面试问题--摘取自github
前端工作面试问题 本文包含了一些用于考查候选者的前端面试问题.不建议对单个候选者问及每个问题 (那需要好几个小时).只要从列表里挑选一些,就能帮助你考查候选者是否具备所需要的技能. 备注: 这些问题中 ...
- checkbox全选
jquery代码如下(在jquery1.10.2下验证通过): <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xh ...
- 总结JS 常用函数
希望本文总结的内容能给各位看官带来焕然一新的感觉.另外,如果你们有什么值得推荐的js技巧,欢迎在评论中补充,我可以收纳在本文中. PS:此文档会持续新增内容. Ajax请求 jquery ajax函数 ...
- 手机GPS为什么能在室内定位?
为什么手机在室内也能定位?大部分人知道手机会通过GPS进行定位,其实手机定位系统并不是和我们的RTK完全一样的,因为那样就无法解释为何在室内也能定位了,这里我来科普一下智能手机的那些定位方法. ...
- ZOJ3790_Consecutive Blocks
给出一个数组,最多可以删除k个数,问能够获得的最长的一个数字连续段为多少? 把所有相同的数字都提取出来,保存取得每个数字需要删除的数字,然后二分枚举就可以了. 召唤代码君: #include < ...
- Oracle表空间数据文件移动的方法
最近遇到这样的一个问题,Oracle存放表空间文件的盘符 空间不够了,必须把部分表空间迁移出去, [转]http://www.jb51.net/article/77026.htm 实现把用户表空间中的 ...
- 高尔夫管理系统SSH
登录-----------http://localhost:8080/GOLF/Denglu 一.Action 1.处理今日消费数据逻辑的 package com.chinasofti.golf.ac ...