JPBC ing: 留言板之一:用JAVABEAN與DAO封裝數據的業務邏輯及操作

          ??????首先,先用DAO把數據業務邏輯部分分離開來,因為我只用到MySQL,所以就省略了工廠類,定了一個業務邏輯的接口及實現它的類。

          ?????MessageDAO.java??????
          package?DAO.iface;

          import?java.util.List;
          /**
          ?*?進行數據操作的業務邏輯類接口的DAO
          ?*?
          @author?Administrator
          ?*
          ?
          */

          public?interface?MessageDAO?{
          ????
          public?List?getMessageList();
          }


          ???MessageDAOMySQL.java
          package?DAO.impl;

          import?java.sql.Connection;
          import?java.sql.ResultSet;
          import?java.sql.SQLException;
          import?java.sql.Statement;
          import?java.util.ArrayList;
          import?java.util.List;

          import?bean.DatabaseBean;
          import?bean.MessageBoardBean;

          import?DAO.iface.MessageDAO;
          /**
          ?*?進行數據操作的業務邏輯類
          ?*?
          @author?Administrator
          ?*
          ?
          */

          public?class?MessageDAOMySQL?implements?MessageDAO?{
          ????
          private?DatabaseBean?db?=?null;
          ????
          private?Connection?conn?=?null;
          ????
          private?Statement?stmt?=?null;
          ????
          private?ResultSet?rs?=?null;
          ????
          private?List<MessageBoardBean>?messageList;

          ????
          public?MessageDAOMySQL()?{
          ????????db?
          =?new?DatabaseBean();
          ????}


          ????
          public?List?getMessageList()?{
          ????????????messageList?
          =?new?ArrayList<MessageBoardBean>();
          ????????????conn?
          =?db.getConn();
          ????????????stmt?
          =?db.getStatement(conn);
          ????????????rs?
          =?db.getResultSet(stmt,?"select?*?from?messageboard;");
          ????????????
          try?{
          ????????????????
          while?(rs.next())?{
          ????????????????????MessageBoardBean?tempMessage?
          =?new?MessageBoardBean();
          ????????????????????tempMessage.setUserName(rs.getString(
          2));
          ????????????????????tempMessage.setTitle(rs.getString(
          3));
          ????????????????????tempMessage.setWords(rs.getString(
          4));
          ????????????????????tempMessage.setTime(rs.getString(
          5));
          ????????????????????messageList.add(tempMessage);
          ????????????????}

          ????????????}
          ?catch?(SQLException?e)?{
          ????????????????e.printStackTrace();
          ????????????}
          ?finally?{
          ????????????????db.close(rs);
          ????????????????db.close(stmt);
          ????????????????db.close(conn);
          ????????????}

          ????????????
          return?messageList;
          ????}


          }


          ??????為了對外擴展可能在此用到數據庫的操作,所以將數據庫的連接和簡單的增刪改查等操作封裝到一個Bean中。

          ???DatabaseBean.java
          ???
          package?bean;

          import?java.sql.Connection;
          import?java.sql.DriverManager;
          import?java.sql.ResultSet;
          import?java.sql.SQLException;
          import?java.sql.Statement;


          public?class?DatabaseBean?{

          ????
          /**
          ?????*?數據庫的封裝,javaBean
          ?????*?
          @param?nonels
          ?????
          */

          ????
          public??Connection?getConn()?{
          ????????Connection?conn?
          =?null;
          ????????
          try?{
          ????????????Class.forName(
          "com.mysql.jdbc.Driver");
          ????????????conn?
          =?DriverManager.getConnection("jdbc:mysql://localhost/JPBC?user=root&password=root");
          ????????}
          ?catch?(ClassNotFoundException?e)?{
          ????????????e.printStackTrace();
          ????????}
          ?catch?(SQLException?e)?{
          ????????????e.printStackTrace();
          ????????}

          ????????
          return?conn;
          ????}

          ????
          ????
          public??Statement?getStatement(Connection?conn)?{
          ????????Statement?stmt?
          =?null;
          ????????
          try?{
          ????????????
          if(conn?!=?null)?{
          ????????????????stmt?
          =?conn.createStatement();
          ????????????}
          ?
          ????????}
          ?catch?(SQLException?e)?{
          ????????????e.printStackTrace();
          ????????}

          ????????
          return?stmt;
          ????}

          ????
          ????
          public??ResultSet?getResultSet(Statement?stmt,?String?sql)?{
          ????????ResultSet?rs?
          =?null;
          ????????
          try?{
          ????????????
          if(stmt?!=?null)?{
          ????????????????rs?
          =?stmt.executeQuery(sql);
          ????????????}

          ????????}
          ?catch?(SQLException?e)?{
          ????????????e.printStackTrace();
          ????????}

          ????????
          return?rs;
          ????}

          ????
          ????
          public??void?close(Connection?conn)?{
          ????????
          try?{
          ????????????
          if(conn?!=?null)?{
          ????????????????conn.close();
          ????????????????conn?
          =?null;
          ????????????}

          ????????}
          ?catch?(SQLException?e)?{
          ????????????e.printStackTrace();
          ????????}

          ????}

          ????
          ????
          public??void?close(Statement?stmt)?{
          ????????
          try?{
          ????????????
          if(stmt?!=?null)?{
          ????????????????stmt.close();
          ????????????????stmt?
          =?null;
          ????????????}

          ????????}
          ?catch?(SQLException?e)?{
          ????????????e.printStackTrace();
          ????????}

          ????}

          ????
          ????
          public??void?close(ResultSet?rs)?{
          ????????
          try?{
          ????????????
          if(rs?!=?null)?{
          ????????????????rs.close();
          ????????????????rs?
          =?null;
          ????????????}

          ????????}
          ?catch?(SQLException?e)?{
          ????????????e.printStackTrace();
          ????????}

          ????}


          }


          ??????再將留言板的各個信息也封裝成一個Bean

          ??????MeassageBoardBean.java
          ??????
          package?bean;
          /**
          ?*??留言板信息的bean
          ?*?
          @author?nonles
          ?*
          ?
          */


          public?class?MessageBoardBean?{
          ????
          private?String?userName;
          ????
          private?String?title;
          ????
          private?String?words;
          ????
          private?String?time;
          ????
          ????
          public?MessageBoardBean()?{
          ????????
          ????}

          ????
          ????
          public?String?getTime()?{
          ????????
          return?time;
          ????}

          ????
          public?void?setTime(String?time)?{
          ????????
          this.time?=?time;
          ????}

          ????
          public?String?getTitle()?{
          ????????
          return?title;
          ????}

          ????
          public?void?setTitle(String?title)?{
          ????????
          this.title?=?title;
          ????}

          ????
          public?String?getUserName()?{
          ????????
          return?userName;
          ????}

          ????
          public?void?setUserName(String?userName)?{
          ????????
          this.userName?=?userName;
          ????}

          ????
          public?String?getWords()?{
          ????????
          return?words;
          ????}

          ????
          public?void?setWords(String?words)?{
          ????????
          this.words?=?words;
          ????}

          ????
          }

          posted on 2008-10-16 23:45 nonels 閱讀(808) 評論(1)  編輯  收藏 所屬分類: J2EE

          評論

          # re: JPBC ing: 留言板之一:用JAVABEAN與DAO封裝數據的業務邏輯及操作 2012-12-10 09:26 黑色紀念館

          能具體解釋一下每行代碼的意思嗎,非常感謝  回復  更多評論   

          <2008年10月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類(16)

          隨筆檔案(16)

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 新竹县| 闵行区| 永平县| 开原市| 安丘市| 博乐市| 都江堰市| 临西县| 乾安县| 孟津县| 秦皇岛市| 平原县| 勐海县| 富宁县| 屏边| 女性| 尉犁县| 柞水县| 尉氏县| 三门峡市| 罗江县| 农安县| 涞源县| 五指山市| 陆川县| 常州市| 隆子县| 大悟县| 玉田县| 平武县| 安塞县| 盐城市| 大足县| 斗六市| 奉贤区| 武夷山市| 兴仁县| 磴口县| 霍山县| 永安市| 西林县|