Hibernate,地球人都知道,不知道?哦,那不是学Java的,是学Java的?哦,那才刚刚开始学。
学很久了?哦,那就是做的项目太少了。做过好几个项目了?哦,是不是一直在用最原始的JDBC和数据库交互。
写Java代码日子不少了,可感觉Java还不是练的很好,前段时间,有人问对JDBC熟悉吗?回答还可以,挺简单的。
接着问,说说使用JDBC的几个步骤。顿时有点发闷,还真不知道怎么回答,看来对JDBC的了解还是不够,天天用
封装好的东西,基础的东西都忘记了,或者说本身就不好。
今天正好不是很忙,打算把以前学的东西巩固下,重新消化消化。
目的:
编写一个查询的方法,为了更好的重用它,要求输入一个类名、查询语句后,能够返回这个类的对象列表。
这就像现在很流行的组件——Hibernate一样,不过不需要向它那么强的,今天要做的只是很小的一部分,
仅仅是取出数据,然后把数据通过Java反射机制,动态的保存到指定类的对象里。
从而达到练习Java反射和JDBC,加深对他们的印象。
Java反射
Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,
并能直接操作程序的内部属性。例如,使用它能获得 Java 类中各成员的名称并显示出来。
Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。
例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。
Java Reflection 例子
更多有关Java反射的介绍,请参考:http://dev.csdn.net/article/49/49876.shtm
Java Reflection在实际应用中的用法
1、JDBC通常的用法
2、把JDBC更高级的应用,简单封装
以上是借助Java的反射机制,动态的把数据保存到了指定类的对象里面。
用户只要调用find(String className, String sql)方法,传入类名和查询语句即可返回一个对象列表,这样更方便的使用返回的数据了。
附录:
创建表
CREATE TABLE `test`.`students` (
`id` INTEGER UNSIGNED NOT NULL,
`name` VARCHAR(45) NOT NULL,
`age` INTEGER,
`sex` VARCHAR(1),
`phone` VARCHAR(20),
PRIMARY KEY (`id`)
)
ENGINE = InnoDB;
插入测试数据
insert into students (id, name, age, sex, phone) values(1, 'liuhongjun', 25, 'M', 13500000000);
insert into students (id, name, age, sex, phone) values(2, 'pandeyou', 28, 'M', 13511111111);