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;
    }
}

 

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