zoukankan      html  css  js  c++  java
  • 代码分层之模拟servlet调用dao

    一:代码分层

    com.guangming.dao 存放dao相关的类型 例如 StudentDAOImpl 处理 数据库的链接 存取数据
    com.guangming.servlet 存放servlet相关的类 例如:StudentServlet 处理 与浏览器交互的类
    com.guangming.entity 存放实体类 例如 Student 接受数据库对象模型
    com.guangming.util 存放工具类 例如 DBUtil

    如图:

    二:模拟servlet调用dao

    步骤: 

      1 .创建一个数据库表 Student( id name age )

      2 创建数据库表对应的实体类 (为什么要创建实体类?作用:以后数据库表中的数据 提取到 java中的时候 用 对象来存储)

      3 创建DAO

        A 组成 两部分: 接口 ( 声明 )和 实现类
         接口的命名规则例如: IStudentDAO I 代表这是一个接口 Student 对应业务名称(表名) DAO 后缀 表明当前是一个dao接口
         实现类的命名规则例如: StudentDAOImpl Student 代表业务名称(表名) DAOImpl 代表dao接口的实现
            为什么需要接口+实现类? 因为 我们需要一个多态的特征。
         ---------------------------------多态----------------------------------------------------------
          什么是多态? 多种状态
          如何产生多态? 继承多态 父类的引用 子类的对象 例如 : Animal a = new Dog(); 基本上不用
          接口多态 接口的应用 实现类的对象 例如: IStudentDAO dao = new StudentDAOImpl();
          为什么要使用多态? 程序解耦 解除程序的耦合性
         --------------------------------------------------------------------------------------------------
        B 接口声明的方法(接口中该写哪些方法)
        重要:根据业务需求 / CRUD 增删改查

    接口代码:(声明方法) 

    /**接口命名规则:
     *创建接口IStudent.I代表这是一个接口,Student代表对应业务的名称(表名),DAO后缀,表明当前是一个DAO接口
     */
    public interface IStudentDAO {
    
        /*1.添加新学生
        * sql语句insert into Student (name,age) values(?,?);
        * @param是学生对象,里面存放着需要添加的学生信息
        * @return的boolean类型,成功返回true,失败返回false
        * 注意:两个以上的参数,使用对象传参。如该例子的Student
        * */
        boolean add(Student s);
        /*2.根据id删除学生
        * sql语句:delete from Student where id=?;
        * */
        boolean delete(int id);
        /*3.根据id修改学生
        * sql语句:update Student set name=? ,age=? where id=?;
        * */
        boolean update(Student s);
        /*4.根据id查询学生
        * Map是一个key value的键值映射
        * java类型接收:一个返回值类型,返回id name age三个数据
        * 对象接收:Student s=new Student();
        * s.setId();s.setName();s.setAge();
        * 多态:Map map=new HashMap();
        * map.put("id", );map.put("name", );map.put("age", );
        * */
        Map<String ,Object> getStudent(int id);
        /*5.查询所有的学生*/
        List<Map<String ,Object>> getAllStudent();
    }

    实现类代码:(对方法完成实现)


    //删除
        @Override
        public boolean delete(int id) {
            String sql = "delete from student where id = ?";
            return DBUtil.executeUpdate(sql,id);
        }
    //修改
        @Override
        public boolean update(Student s) {
            String sql = "update student set name=?,age=? where id = ?";
            return DBUtil.executeUpdate(sql,s.getName(),s.getAge(),s.getId());
        }
    //查询,结果封装成map(只能查一条)
        @Override
        public Map<String, Object> getStudent(int id) {
            String sql="select * from student where id=?";
            List<Map<String, Object>> list = DBUtil.executeQuery(sql, id);
            System.out.println(list);
            if (list.size()>0){
                return  list.get(0);
            }
            return null;
        }
    //查询,多条map放进list集合中
        @Override
        public List<Map<String, Object>> getAllStudent() {
            String sql="select * from student";
            return DBUtil.executeQuery(sql);
        }
    }

      4 接口中 声明 五个方法 (一个方法:返回值 参数 试想一下 这个业务的sql )
       
     A 添加新学生
        B 根据id删除学生
        C 根据id修改学生
        D 根据id查询学生
        E 查询所有学生
      5 对方法完成实现
      6 测试代码

     

  • 相关阅读:
    数组的方法 Array.map();Array.every()和Array.some();数组的indexof();检测是否是数组isArray(obj);
    jsonp的三种跨域方式
    Python函数的参数
    Python 函数
    collection 类
    字符串,列表,元组,字典基本函数
    图像处理------图像加噪 分类: 视频图像处理 2015-07-24 09:26 24人阅读 评论(0) 收藏
    图像处理------理解卷积 分类: 视频图像处理 2015-07-24 09:25 24人阅读 评论(0) 收藏
    图像处理------颜色梯度变化 (Color Gradient) 分类: 视频图像处理 2015-07-24 09:23 27人阅读 评论(0) 收藏
    图像处理------噪声之美
  • 原文地址:https://www.cnblogs.com/duguangming/p/10691695.html
Copyright © 2011-2022 走看看