DAO(Data Access Object,數據訪問對象)的封裝筆記

因爲期末考的原因一直沒時間看DAO這一塊的視頻,所以JSP中從el表達式之後就跟不上了,昨天剛考完期末考。終於有些時間來整這玩意了,要乘課程設計這段時間把前面落下的JAVA內容都補回來,加油吧。

概念:

DAO(數據訪問對象),到數據庫存取數據的對象

通常的包名:dao

感想:

DAO其實就是簡化了JDBC的代碼,讓JSP頁面上看起來更簡潔,但是爲了一張表需要封裝至少三個類(UserInfoDao類,DbUtil類,UserInfo類),而且每張表的三個類都不一樣,真的還蠻辛苦的,並沒有簡化多少操作,不知道值不值得。總之先學下去,後面可能會發現別的東西,未完待續

代碼全部

public class UserInfoDao{//extends DbUtil
    //不建議使用繼承實現,會讓DAO對DbUtil類產生強依賴(強耦合)
    private DbUtil db = new DbUtil();//JDBC的封裝類對象
    //通過屬性的方式,使用接口變成可以降低對DbUtil的依賴
    //還需要通過set方法配合。或者通過構造函數配合
    //這一過程叫作解耦合
    //set方法配合
    public void setDb(DbUtil db){
        this.db=db;
    }
    //不帶參數的構造方法
    public UserInfoDao(){
        this.db=new DbUtil();
        this.db.setDatabaseName("chatroomsystem");
    }
    //帶參數的構造方法
    public UserInfoDao(DbUtil db){
        this.setDb(db);
    }
    //新增方法
    //新增操作,需要的參數其實是表中每個字段的數據
    public boolean add(UserInfo userInfo){
        return false;
    }
    //刪除方法
    public boolean remove(UserInfo userInfo){
        return this.remove(userInfo.getUserId());
    }
    public boolean remove(int pkId){
        return false;
    }
    //修改方法
    public boolean merge(UserInfo userInfo){
        return false;
    }
    //查詢方法
    //1.根據主鍵ID
    public UserInfo findById(int pkId){
        return null;
    }
    //2.查全部
    public List<UserInfo> findAll(){
        List<UserInfo> List=new ArrayList<UserInfo>();
        //構建查詢語句
        StringBuffer sb=new StringBuffer();
        sb.append("select u_id,u_pwd,u_name,u_pwd,u_nick,u_img,u_email,");
        sb.append("u_phone,u_card_id,u_register_time,u_state,u_remark");
        sb.append("from tb_user_info;");
        return list;
        try{
            //執行查詢語句
            ResultSet rs=this.db.doQuery(sb.toString());
            //封裝結果
            return this.buildList(rs);
        }catch(SQLException){
            e.printStackTrace();
        }
    }
    //3.根據條件查
    public List<UserInfo> findByExample(UserInfo userInfo){
        List<UserInfo> List=new ArrayList<UserInfo>();
        return list;
    }
    //4.根據SQL查
    public List<UserInfo> findBySQL(String sql,Object... params){
        List<UserInfo> List=new ArrayList<UserInfo>();
        try{
            ResultSet rs = this.db.doQuery(sql,params);
            return this.buildList(rs);
        }catch(SQLException e){
            e.printStackTrace();
        }
        return null;
    }
    public UserInfo builtObject(ResultSet rs) throws SQLException{
        //將一行數據封裝成一個實體對象
        UserInfo userInfo=new UserInfo();
        userInfo.setUserId(rs.getInt("u_id"));
        userInfo.setUserName(rs.getString("u_name"));
        userInfo.setUserPwd(rs.getString("u_pwd"));
        userInfo.setUserNick(rs.getString("u_nick"));
        userInfo.setUserImg(rs.getString("u_img"));
        userInfo.setUserEmail(rs.getString("u_email"));
        userInfo.setUserPhone(rs.getString("u_phone"));
        userInfo.setUserCardId(rs.getString("u_card_id"));
        userInfo.setUserRegisterTime(rs.getDate("u_register_time"));
        userInfo.setUserState(rs.getBoolean("u_state"));
        userInfo.setUserRemark(rs.getString("u_remark"));
        return userInfo;
    }
    public List<UserInfo> buildList(ResultSet rs) throws SQLException{
        List<UserInfo> list = new ArrayList<UserInfo>();
        rs.beforeFirst();
        while(rs.next(){
            list.add(this.buildObject(rs));
        }
        return list;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章