开发工具:
文件大小: 481kb
下载次数: 0
上传时间: 2019-07-02
详细说明:简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息。基本原理;保存数据时,把需要保存的对象的属性值全部取岀来再拼凑sq语句
查询时,将查询到的数据全部包装成一个java对象
游戏规则:俗话说的好,无规矩不成方圆,特别是程序来说,它只能做有规则的事情,没有规则的
它干不了,好,那就
先定规贝
1)数据库的每一个表对象一个poj类,表中的每一个字段对应pojo类的中的一个属性。
并且pojo类的名字和表的名字相同,属性名和字段名相同,大小写没有关系,因为数据
库一般不区分大小写
2)为pojo类中的每一个属性添加标准的set和ge方法。
有了游戏规则,那么开始游戏吧。
1、首先数据库的有一个表,假设数据库名称为: blogsystem,里面的一个表名 userinfo如图
Column Name Datatype
L°Fag8
Id
√ UNSIGNED口 ZEROFIL
命Name
VARCHAR(45)
□ TNARY
o PWd
AR.(45)√口日
BIAR丫
IN(45)
√uNGD□ROFL
2、创建对应的pojo类
package cn. netjava. pojci
public class UserInfo
4
String name
rivate string p
nt age
override
ublic string tostr
012345
reTurn"UserInfo [id="+id
age
int getId( i
16
return id:
17
1122
id setId(int id)t
89012
this, id= id
c string ge
return naine i
23
24
public void seLName(String name)
25
this, name name
26
b1 ic String getpvd()「
eur
22233333
78901234
Pwd(St
pwd)I
this pwd= pwd;
bl
return ag
35
36
37
38
39
2、编写获得数据库连接的工厂类
mpor
import java. sql DriverManager
oublic class ConnecL2 D3FacLory i
4
pubL⊥ c staL⊥ c ConnecTion
6
ass forName(com. mys
q1·chc. Driver"
10
string
11
jdbc: mysql: //localhost: 3306/blo
12
13
string user =wroot"i
14
String password
15
" net java"冫
Conn
16
17
r⊥ verManager, geLConnec t⊥on(r1
user,password)
8
catch (Exception e)
19
e. printstackfrace()i
20
21
return conn
3、好戏开始啦,编写操作数据库的dao类
package cn. netjava. session;
f⊥ec七.Fie⊥d;
mpor java. sql Connection;
import java. sql. PreparedsLaLemenLi
mpor- java. sql Resultset
import java. sql SQT,Except
import java. sql Statement
10
import java.ut.il Arraylist.
11
mpor javautil. List
12
13
import cn.netjava factory Connect2
14
DBFactoryi
15
mport cn. netjava pojo UserInfo;
16
17
public class etJavaSession i
18
19
解析出保存对象的sc1语句
20
21
k param object
22
需要保存的对象
23
artur
保存对象的sq语句
24
public static String
26
getsaveobjectsql(Object object)(
27
//定义一个sq1字符串
28
sql=insert int
29
30
//得到对象的类
32
ject getclass()i
33
/得到对象中所有的方法
34
35
Methods
36
//得到对象中所有的属性
37
38
c getFields(i
39
//得到对象类的名字
40
String cName =C getName()i
41
//从类的名字中解析出表名
42
String LableNarre
43
CName substring(cName. lastIndexO
44
f
45
cName length())i
46
sql+- table
47
ist mList-new
Arraylist()
48
List vlist= new
49
isto
50
for (Method me thod
51
ethods) t
52
53
method. getName (
54
f(mName. startsiith(
55
56
mName startswith(getClass"))
57
String fieldname
58
mName substring(3,
59
mName length())
60
mT ist. add (fieldName
61
62
System. out.printIn
63
("字段名字--->"-fie1Name);
64
try i
65
Object val
66
method. invoke(object, null)i
67
System. out. pr-
68
L1n("执行方法返回的值:"+ value);
69
nstanceof st
70
71
72
out
73
("字段值
74
else i
75
T ist. add(
78
9012345678
7888888
e. printstackTr
for (int
t size
if (i< mList size(
8
89
sq⊥|=mist.get(i)
90
j else i
92
1
L⊥sL.geL(i)
9999
3456
values (i
for (int 1-0
97
VList.size()
+){
98
if(i vList size(
1){
111
9000000
0
I+=vlist. get(i)
2
y else i
10
st get(i)
105
06
108
return sq-
109
110
pub⊥⊥ c static
112
List getDatasFromDB (String
tab⊥ eName, int ld)
114
115
eturn nulli
116
将对象保存到数据库中
120
121
param object
122
需要保存的对象
123
k artur:方法执行的结果;1:表示
124
成功,0:表示失败
125
126
127
int saveObject(Object object)(
128
129
Connect2DBeactory. getDBConnec-lo
130
()
131
132
getsaveobiec-Sa_(object)i
133
try
134
// Statement
135
taterent=(Statement)
136
Restatement (
37
Preparedstatement psmt
38
it(sq)
139
psmt. executeUpdate(
140
return 1
4
catch (SQLException e)
142
e printstackTrace()
return
14
3456
147
*从数据库中取得对象
1111
89012
dit d
对象所属的类
55
m id
对象的
53
* retur:需要查找的对象
154
155
public Object getobject(string
156
C⊥ assname, int ld)
157
//得到表名字
158
String tableWare
566
className. subsTring(className.la
1111
9012
stIndexof(.)+l,
className. length(
162
);
63
/根据类名来创建c1ass对象
164
Class c=nulli
165
167
=Class forName(cl assName
68
169
170
(ClassNoLFouGExcepLion el)i
171
172
//拼凑查询sq1语句
String sql-"select from
t tableName + h where t="+ td
System.out, println("查找
sq1语句:"+sq1)
/′获得数据库链接
=ConnecL2DBFacLory geLDBConnectio
//创建类的实例
J
try i
lestat
//得到执行查寻语句返回的
结果集
Resultset
set = stm executeQuery(sql)i
//得到对象的方法数组
d[]
-C getMethods (
//遍历结果集
Thile (set next()
c newinstance oi
/遍历对象的方法
for (Method method
tring
ne LhodName=me Lhod. getName (i
//如果对象的方
法以set开头
if(methodName
starswith("set")
/根据方法
名字得到数据表格中字段的名字
string
me thodName substring(3
hodName. leng Lh()
//得到方法
的参数类型
CLass[]
parts
method get ParameterTypes()
if(parts
String class)
//如果
参数为 String类型,则从结果集中按照列名
取待对应的值,并且执行改set方法
setgetString(columnName));
if (parts
t class) i
thod
Invo
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.