初探
先认识一下这两个类是做什么的
bean类
用户可以使用JavaBean技术将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。
他可以存储我们从数据库上的数据, 可以看做是另一个神奇的表。Dao类
Dao类是访问数据库数据的操作类,你可以把一些你寄希望于在数据库上的操作放在这里,用的时候只要在这里调用即可,这样可以大大减少重复代码的定义,而且调用及其简单。
如何编写
- bean类
比如我有一个数据库中的表为Student表,他拥有Scard_no,Spwd,Sname,Ssex,grade,book_max 等列,你就可以创建一个java类,取名随意,建议StudentBean。
你就可以根据数据库列名(这个可以随意取,不过建议与数据库中相同,因为这样可以防止搞乱)和在类中添加:
private String Scard_no;
private String Spwd;
private String Sname;
private String Ssex;
private String grade;
private String book_max;
然后采用source-Generate-Getters and Setters 在类中创建get和set方法。
为你基本上都会用到的数据库都创造这么一个类,在Dao类中我们将体现其价值!
2. Dao类
先来看一段程序
StudentDao
public StudentsBean getStudentByScardNo(String scard_no){
dbutilADMIN dbutilADMIN = new dbutilADMIN();
String sql="select * from SYSTEM.SCARD_VIEW where Scard_no='"+scard_no+"'";
ResultSet rs =dbutilADMIN.query(sql);
try {
if (rs != null) {
while (rs.next()) {
StudentsBean stu =new StudentsBean();
stu.setSname(rs.getString("Sname"));
stu.setSsex(rs.getString("Ssex"));
stu.setGrade(rs.getString("grade"));
stu.setSpwd(rs.getString("Spwd"));
stu.setBook_max(rs.getString("book_max"));
return stu;
}
}
} catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
return null;
}
这是一个方法,通过学生卡号获得其其他基本信息,所以取名为getStudentByScardNo(当然这个名字你可以另取,这个无妨)。
我们先取得数据库连接并取得你要的数据,具体类见上篇教你写数据库连接类
dbutilADMIN dbutilADMIN = new dbutilADMIN();
String sql=”select * from SYSTEM.SCARD_VIEW where Scard_no=’”+scard_no+”’”;
ResultSet rs =dbutilADMIN.query(sql);
由于下面一段代码会抛出异常,所以要用try-catch接收
if (rs != null) {
while (rs.next()) {
StudentsBean stu =new StudentsBean();
stu.setSname(rs.getString("Sname"));
stu.setSsex(rs.getString("Ssex"));
stu.setGrade(rs.getString("grade"));
stu.setSpwd(rs.getString("Spwd"));
stu.setBook_max(rs.getString("book_max"));
return stu;
}
见rs.next(),由于ResultSet取得的数据默认为第0行,所以你需要next()方法去获取下一行。使用刚才创建的bean类的set方法,给这个bean类附上你数据库的值,意味着一个bean类对应你数据库中数据的一行。
方法最后return的是一个bean类对象。
实战利用
在实战中你需要定义一个StudentBean对象,然后采用ArrayList数据结构存储你的每一行。
例如以下例子:
ArrayList<StudentsBean> studentsbean =StudentDao.getStudentByScardNo(str_Scard_no);
这样你数据库内的所有表的行都被存储到了studentsbean 中,当你想要其中的一行时,i即为行数
此处用循环可以把所有的行都调用出来
StudentsBean studentsbean =studentsbean .get(i);
然后就可以用bean类所定义的studentsbean.getgetScard_no()方法来取得这个Scard_no。
或者你只是想查询单独的一个数据
可以这样写:
StudentDao
public int getmax_bookByScard_no(String scard_no){
dbutilADMIN dbutilADMIN = new dbutilADMIN();
String sql="select book_max from SCARD_MAX,SCARD where SCARD_MAX.GRADE=SCARD.GRADE AND SCARD.SCARD_NO='"+scard_no+"'";
ResultSet rs =dbutilADMIN.query(sql);
int max_book = 0;
try {
if (rs != null) {
while (rs.next()) {
max_book = rs.getInt("book_max");
}
return max_book;
}
} catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
return 0;
}
直接返回你获取到的值,这样就完成了查询
你只要在JSP网页中
<%
StudentDao studentdao = new StudentDao();
int max_book = studentdao.getmax_bookByScard_no(str_scard_no);
%>
这样就得到了这个max_book的值
总结
bean类的实际意义是作为一个储存结构临时储存数据库中取得的一些多列数据,ArrayList是为了让多行数据变得简单存储,Dao类的意义就是将页面和后台增删改查四大操作分离,有了这些后台类,你要做的只是在JSP页面中调用这些数据,将会变得更加简洁!