1. 程式人生 > >JavaWeb——教你寫bean實體類和Dao資料庫操作類

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頁面中呼叫這些資料,將會變得更加簡潔!

相關推薦

JavaWeb——bean實體Dao資料庫操作

初探 先認識一下這兩個類是做什麼的 bean類 使用者可以使用JavaBean技術將功能、處理、值、資料庫訪問和其他任何可以用java程式碼創造的物件進行打包,並且其他的開發者可以通過內部的JSP頁面、Servlet、其他JavaBean、appl

手把手DI_3_小白徒手支援 `Singleton` `Scoped` 生命週期

手把手教你寫DI_3_小白徒手支援 Singleton 和 Scoped 生命週期 渾身繃帶的小白同學:我們繼續開展我們的工作,大家都知道 Singleton是什麼,就是全域性只有一個唄,我們就先從它開始,這個多簡單,我們找個字典放這些物件就ok啦 public class ServiceProvider

Android網路框架之Request Response與請求佇列

                我正在參加部落格之星,點選這裡投我一票吧,謝謝~   前言在教你寫Android網路框架之基本架構一文中我們已經介紹了SimpleNet網路框架的基本結構,今天我們就開始從程式碼的角度來開始切入該網路框架的實現,在剖析的同時我們會分析設計思路,以及為什麼要這樣做,這樣做的好處是

一個炫酷的Material Design 風格的登入註冊頁面

每個人都會喜歡漂亮的登入介面,一個App 給人們的第一印象是非常重要的。 這篇文章將教你使用谷歌材料設計規範(Material design spec )和谷歌的新的設計支援庫( design support library)來建立一個炫酷的登入和註冊介面。設

出StringUtils工具

程式碼中,我們有時候要經常進行比較,確定一些條件滿不滿足,例如是否是空,是否是null等等。。。。。 下面我就將我的StringUtil類附上,分享給大家。 附上程式碼: /* *程式碼很簡單,就是判斷常用的字串是不是滿足一些條件 * *裡面有判斷字串

手把手電商爬蟲(3):實戰尚妝網AJAX請求處理內容提取

看完兩篇,相信大家已經從開始的小菜鳥晉升為中級菜鳥了,好了,那我們就繼續我們的爬蟲課程。 上一課呢一定是因為對手太強,導致我們並沒有完整的完成尚妝網的爬蟲。 吭吭~,我們這一課繼續,爭取徹底搞定尚妝網,不留任何遺憾。 我們先回顧一下,上一課主要遺留了兩個問題,兩個問題都和a

手把手Dockerfile, 附贈MongoDBNginx Dockerfile編寫例項

基礎映象可以用於建立Docker容器。映象可以非常基礎,僅僅包含作業系統;也可以非常豐富,包含靈巧的應用棧,隨時可以釋出。當你在使用Docker構建映象的時候,每一個命令都會在前一個命令的基礎上形成一個新層。這些基礎映象可以用於建立新的容器。本篇文章將手把手教您如何從基礎映

小程序初體驗:手把手出第一個小程序(一)

輸入框 個人 創建 公測 快速 nsh 成功 too 調用 本文筆者將根據quick start中的範例代碼,帶大家簡單地剖析一下小程序的運行方式,並介紹小程序開發中一些通用的特性,帶著大家一步步寫出自己的小程序。 適用對象:前端初學者,對小程序開發感興趣者 tip

Http框架(二)——三個樣例帶深入理解AsyncTask

func implement oncreate 其它 層疊 worker dcl 例如 人員 這個標題大家不要奇怪,扯Http框架怎麽扯到AsyncTask去了,有兩個原因:首先是Http框架除了核心http理論外。其技術實現核心也是線程池 + 模板 +

【Python】三個例子代碼

位數 mage int 1-1000 image end src orm origin 這篇文章包括用Python編寫的斐波那契數列,三位數的水仙花數和百錢買百雞的基礎代碼: (一)斐波那契數列: ‘‘‘ def hanshu(n): n_1 = 1 n_2 =

大神手把手一個頁面模板引擎,只需20行Javascript代碼!

[1] 表達 最終 strong ice ali 開頭 syntax years 只用20行Javascript代碼就寫出一個頁面模板引擎的大神是AbsurdJS的作者,下面是他分享的全文,轉需。 不知道你有木有聽說過一個基於Javascript的Web頁面預處理器,叫做A

UWP Jenkins + NuGet + MSBuild 手把手做自動UWP Build App store包

測試 rest IT for 子項目 del get ges 上傳 原文:UWP Jenkins + NuGet + MSBuild 手把手教你做自動UWP Build 和 App store包背景 項目上需要做UWP的自動安裝包,在以前的公司接觸的是TFS來做自動bui

Swing:LookAndFeel 教程第一篇——手把手出自己的 LookAndFeel

畢業 lean 能開 AC alc 我不 cli private 基礎 本文是 LookAndFeel 系列教程的第一篇。 是我在對 Swing 學習摸索中的一些微

CSAPP Lab:Attack Lab——手把手病毒(大誤

png -o spa 字符 寄存器 產生 方法 函數返回 發現 這個實驗要求在5個有不同安全漏洞的代碼上進行攻擊,攻擊分為兩部分: Part 1:Code Injection Attacks(緩沖區溢出攻擊) Part 2:Return-Oriented Programmi

一個含信息的匯編程序

size net align ads data- str 匯編代碼 data tps dosbox官網: https://www.dosbox.com/ https://download.csdn.net/download/fouken_ma/7682497 其他工具下

Java 11 正式發布,這 8 個逆天新特性出更牛逼的代碼

cti leo clas data 系列 end put The async 美國時間 09 月 25 日,Oralce 正式發布了 Java 11,這是據 Java 8 以後支持的首個長期版本。 為什麽說是長期版本,看下面的官方發布的支持路線圖表。 Java 11 正式發

Makefile(非常全面,講解很清晰)

 Makefile 值得一提的是,在Makefile中的命令,必須要以[Tab]鍵開始。       什麼是makefile?或許很多Winodws的程式設計師都不知道這個東西,因為那些Windows的IDE都為你做了這個工作,但我覺

手把手DI_1_DI框架有什麼?

DI框架有什麼? 在上一節:手把手教你寫DI_0_DI是什麼? 我們已經理解DI是什麼 接下來我們就徒手擼一擼,玩個支援建構函式注入的DI出來 首先我們回顧一下 建構函式注入 的程式碼形式, 大概長這模樣: class MovieLister { private IMovieFinder f

手把手DI_1_DI框架有什麽?

這樣的 desc inject var .net 框架 抽象 幹什麽 depend DI框架有什麽? 在上一節:手把手教你寫DI_0_DI是什麽? 我們已經理解DI是什麽 接下來我們就徒手擼一擼,玩個支持構造函數註入的DI出來 首先我們回顧一下 構造函數註入 的代碼形式,

手把手 | 用幾行Python消費資料做客戶細分

    細分客戶群是向客戶提供個性化體驗的關鍵。它可以提供關於客戶行為、習慣與偏好的相關資訊,幫助企業提供量身定製的營銷活動從而改善客戶體驗。在業界人們往往把他吹噓成提高收入的萬能藥,但實際上這個操作並不複雜,本文就將帶你用簡單的程式碼實現這一專案。 客戶