JavaWeb——教你寫bean實體類和Dao數據庫操作類

初探

先認識一下這兩個類是做什麼的

  1. bean類

    用戶可以使用JavaBean技術將功能、處理、值、數據庫訪問和其他任何可以用java代碼創造的對象進行打包,並且其他的開發者可以通過內部的JSP頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。
    他可以存儲我們從數據庫上的數據, 可以看做是另一個神奇的表。

  2. Dao類

    Dao類是訪問數據庫數據的操作類,你可以把一些你寄希望於在數據庫上的操作放在這裏,用的時候只要在這裏調用即可,這樣可以大大減少重複代碼的定義,而且調用及其簡單。


如何編寫

  1. 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頁面中調用這些數據,將會變得更加簡潔!

發佈了42 篇原創文章 · 獲贊 17 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章