- 浏览: 134672 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (130)
- java基础 (9)
- java高级 (19)
- struts2.x (2)
- spring (1)
- hibernate (1)
- jpa (1)
- ibatis (2)
- javascript (4)
- jsp (2)
- sql (9)
- oracle (12)
- extjs (0)
- uml (0)
- 关于面试 (4)
- 常用软件晋级 (5)
- 网络编程 (1)
- XML (1)
- servlet (5)
- jquery (6)
- Tomcat (3)
- Android (17)
- ssl (1)
- c 指针 (0)
- c/c++/oc (3)
- ios (7)
- 设计模式 (0)
- 终端命令 mac (2)
- sqlite3 (1)
- linux (7)
- hadoop (2)
- 特效 (3)
- 架构之路 (2)
- p2p (1)
- 常见问题 (0)
- html (1)
最新评论
-
zaocha321:
建议改一下文章中的错别字。
多线程(二) -
shamusoft:
在iPhone上是采用sqlite进行数据存储是我一种比较习惯 ...
sqlite3 相关操作 -
bear1122ccc:
这是给学习IOS的人打气呀。顶下。
初学ios -
shamusoft:
<Connector className="o ...
SSL协议(HTTPS) 握手、工作流程详解(双向HTTPS流程) -
shamusoft:
去掉拖动ListView带有的黑色背景: and ...
关于加密
public class MySession { /** * 用反射实现的查找 */ public Object find(Class clazz,Object id){ try { //通过反射获取clazz的类名 QueryRunner query = new QueryRunner(); String className = clazz.getName(); String[] split = className.split("\\."); String tableName = split[split.length - 1]; String sql = "select * from " + tableName + " where id=?"; //Object c = query.query(sql, new BeanHandler(clazz), new Object[] { id }); System.out.println(sql); return null; } catch (Exception e) { throw new RuntimeException(e); } } /* * 实现删除 */ public void delete(Class clazz,Object id){ try { QueryRunner runner = new QueryRunner(); String className = clazz.getName(); String[] split = className.split("\\."); String tableName = split[split.length - 1]; String sql = "delete from " + tableName + "where id=?"; //runner.update(sql, new Object[] { id }); } catch (Exception e) { } } /** * 实现增加 */ public void add(Class clazz){ //首先获得表名 QueryRunner runner = new QueryRunner(); String className = clazz.getName(); String[] split = className.split("\\."); String tableName = split[split.length - 1]; //通过反射获得字段 Field[] fields = clazz.getDeclaredFields(); StringBuilder sb = new StringBuilder("insert into "); sb.append(tableName+" ("); for(Field f:fields){ sb.append(f.getName()+","); } sb.deleteCharAt(sb.length()-1); sb.append(")"); sb.append(" values("); for(int i=0;i<fields.length;i++){ sb.append("?,"); } sb.deleteCharAt(sb.length()-1); sb.append(")"); String sql = sb.toString(); System.out.println("--------add---------\n"+sql); } /* * 修改同类增加 */
评论
2 楼
shamusoft
2011-05-27
try {
Class clazz = bean.getClass();
String className = clazz.getName();
String[] split = className.split("\\.");
String tableName = split[split.length - 1];
Field[] fields = clazz.getDeclaredFields();
QueryRunner runner = new QueryRunner(JbcUtils.getDataResource());
StringBuilder sql = new StringBuilder("insert into ");
sql.append(tableName + " (");
for (Field f : fields) {
sql.append(f + ",");
}
sql.deleteCharAt(sql.length() - 1);
sql.append(" ) values (");
for (Field f : fields) {
sql.append("?,");
}
sql.deleteCharAt(sql.length() - 1);
sql.append(" ) where id=?");
Object params[]= new Object[fields.length];
for(int i=0;i<fields.length;i++){
String value = BeanUtils.getProperty(bean,fields[i].getName());
params[i]=value;
}
int count = runner.update(sql.toString(),params);
if(count>0)return true;
return false;
} catch (Exception e) {
throw new DaoException();
}
Class clazz = bean.getClass();
String className = clazz.getName();
String[] split = className.split("\\.");
String tableName = split[split.length - 1];
Field[] fields = clazz.getDeclaredFields();
QueryRunner runner = new QueryRunner(JbcUtils.getDataResource());
StringBuilder sql = new StringBuilder("insert into ");
sql.append(tableName + " (");
for (Field f : fields) {
sql.append(f + ",");
}
sql.deleteCharAt(sql.length() - 1);
sql.append(" ) values (");
for (Field f : fields) {
sql.append("?,");
}
sql.deleteCharAt(sql.length() - 1);
sql.append(" ) where id=?");
Object params[]= new Object[fields.length];
for(int i=0;i<fields.length;i++){
String value = BeanUtils.getProperty(bean,fields[i].getName());
params[i]=value;
}
int count = runner.update(sql.toString(),params);
if(count>0)return true;
return false;
} catch (Exception e) {
throw new DaoException();
}
1 楼
shamusoft
2011-05-27
Object[] params = new Object[fields.length];
for(int i=0; i<fields.length; i++) {
String value = BeanUtils.getProperty(bean, fields[i].getName());
System.out.println(value);
params[i] = value;
}
for(int i=0; i<fields.length; i++) {
String value = BeanUtils.getProperty(bean, fields[i].getName());
System.out.println(value);
params[i] = value;
}
发表评论
-
maven 学习参考文章
2015-02-10 09:06 559maven环境快速搭建 http://www.cn ... -
用struts 包控制权限的文章
2015-01-09 09:23 584http://www.cnblogs.com/Johness/ ... -
IE 兼容模式 quirks 网页变形
2014-11-27 23:14 675http://www.cnblogs.com/0000/ar ... -
oracle 日期操作
2014-10-16 16:53 638Oracle 获取当前日期及日期格式 获取系统日期: ... -
freemark hellword
2014-09-11 20:32 9471、所需的材料: 主料: myeclipse(我用的版 ... -
学习FreeMaker
2014-04-10 16:41 618原文地址 :http://tailshe ... -
JSONOBJ 转换对象
2013-12-22 13:13 999import java.lang.reflect.Field ... -
p2p 企业信贷 UML 跨行清算
2013-12-07 23:09 619p2p 银行业务 http://blog.csdn.net ... -
glassfish 集群
2013-12-05 14:35 751感谢猫咪文章,在此做 ... -
c语言的指针
2012-02-27 09:08 812C语言中的精华是什么,答曰指针,这也是C语言中唯一的难点。 C ... -
本地域名解析操作步骤:
2012-02-22 09:40 01.打开C:\WINDOWS\system32\drive ... -
SSL协议(HTTPS) 握手、工作流程详解(双向HTTPS流程)
2012-02-14 08:57 1590SSL协议的工作流程: ... -
android httpclient https 单向连接tomcat
2012-02-08 17:01 1683双向篇还未实现,先记录单向验证方式。? 一 Android直接 ... -
关于加密
2011-12-27 14:01 985keytool -genkey -alias shamusof ... -
jdk1.5新特性 增强for循环
2011-06-03 06:52 843[code="java"] ... -
反射泛型注解
2011-05-26 07:47 1643一、反射 1. 一段java代码在程序运行期间会经历三个阶段 ... -
代理实现过滤器例子
2011-05-26 07:29 919package cn.itcast.proxy; imp ... -
动态代理 测试代码
2011-05-26 06:25 710import java.lang.reflect.Constr ... -
工厂模式
2011-05-10 10:39 653分析:工厂模式 工厂模式目的就是解耦。解耦目的是为了一个类的 ...
相关推荐
在实现通用DAO时,反射通常用于动态调用数据库操作的方法,比如SQL查询。例如,在`UsersDAO.java`中,可能有以下代码: ```java public class UsersDAO extends BaseDao<Users> { @Override public void save...
总结起来,通过C#的特性标签和反射技术,我们可以构建一个灵活且可扩展的通用Dao层,大大减少了重复代码,提高了开发效率。这种方法的关键在于利用元数据(特性)来描述实体类和数据库之间的关系,以及利用反射在...
在Java中,使用反射可以实现通用的DAO,无需为每种数据表创建特定的DAO类。通过传入不同的类名,可以动态创建对应数据表的DAO实例,执行CRUD操作。 7. **安全性与性能**: 反射虽然强大,但也有其缺点。由于绕过了...
自定义Dao并通过反射实现,虽然比使用ORM框架(如Hibernate、MyBatis)更繁琐,但可以更好地控制SQL语句,避免了不必要的映射配置。这种方法适用于小型项目或对性能有较高要求的场景,同时也为学习Java反射机制提供...
泛型通用DAO是这种模式的一种优化,它利用了Java 5.0引入的泛型和反射机制,大大简化了DAO层的编码工作,提高了代码的可复用性和可维护性。 泛型是Java中的一种类型系统扩展,它允许在编译时声明参数化的类型,从而...
java反射实现数据库增、删、改、查操作Dao
本文将深入探讨Java语言中如何使用反射机制实现通用DAO,并通过提供的"通用DAO源码及示例"来阐述这一概念。 首先,我们需要理解什么是DAO模式。DAO模式是一种软件设计模式,它的主要目标是为应用程序提供一个抽象层...
本篇文章将深入探讨Hibernate的通用Dao设计,帮助开发者理解如何利用Hibernate提高代码复用性和可维护性。 在传统的Java应用程序中,DAO(Data Access Object)层是用于封装数据库访问逻辑的地方,它隔离了业务逻辑...
基于泛型的通用Dao接口是指使用泛型来实现数据访问对象(DAO)的接口,主要是在使用 Hibernate 或 JPA 时使用。泛型可以使得DAO接口更灵活、更通用。 泛型Dao接口的优点: 1. 耦合性低:泛型Dao接口可以与不同的...
在DAO层中,我们可以利用反射来实现通用的CRUD(创建、读取、更新、删除)操作,减少代码的编写量。 1. **动态创建对象**:通过`Class.forName()`方法,我们可以根据字符串形式的类名获取对应的Class对象,然后使用...
在动态数据库操作中,泛型可以用来创建通用的DAO(数据访问对象)接口和实现,以处理不同类型的实体对象。例如,我们可以定义一个`GenericDAO<T>`接口,其中`T`代表任何数据模型类。这个接口可以包含`insert(T ...
我们可以在Action中使用上述反射机制,根据请求参数决定调用哪个DAO,实现多表操作的路由。例如,我们可以通过请求参数`tableName`来判断是进行用户操作还是订单操作,然后调用对应的DAO方法。 总的来说,本实例...
Java 中利用泛型和反射机制抽象DAO的实例是指在 Java 中使用泛型和反射机制来抽象出一个通用的DAO(Data Access Object),从而将DAO抽象到另一层次,提高代码的质量和可维护性。 在这个实例中,我们首先定义了一个...
泛型dao接口 :GenericDao, ID extends Serializable> 泛型作为DAO的通用接口 CRUD方法 dao接口 : PersonDAO extends GenericDao, Integer> 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 ...
对于数据库操作,我们通常会有一个包含CRUD(Create、Read、Update、Delete)方法的通用DAO(Data Access Object)类。通过反射,我们可以动态地调用这些方法,处理任何类型的实体对象。例如,一个通用的`save()`...
3. **通用DAO**:反射可以实现对数据库操作的通用化,通过传入不同的类和方法名,可以执行CRUD操作,无需为每个表单独写一套DAO。 4. **插件化开发**:如Spring AOP(面向切面编程)利用反射实现动态代理,可以在不...
为了解决这个问题,开发者经常使用 DAO(Data Access Object)模式来封装这些操作,而反射可以进一步简化这一过程。 反射的运用在于,我们可以通过Class对象动态获取类的信息,包括类的字段(属性)和方法。在...
superDAO利用Java的反射机制实现的万能DAO工具类,包含对应的测试代码,利用万能DAO可以对数据库中任意表进行操作,只需一个DAO类即可完成。具体功能包括:单表查询多表查询模糊查询添加修改删除阅读本代码需要掌握...
这篇博文“利用java反射、注解及泛型模拟ORM实现”旨在探讨如何结合这三种技术来实现对象关系映射(ORM),这是一种将数据库表与Java对象之间进行绑定的技术,简化了数据操作。 首先,我们来理解一下这三个概念: ...
本主题主要探讨的是如何使用泛型和反射技术来实现Hibernate对DAO的封装,从而创建一个通用的DAO模板,减少开发者重复编写CRUD(Create、Read、Update、Delete)操作的工作。 首先,我们需要理解DAO(Data Access ...