尚硅谷之JDBC

117 篇文章 0 订阅
116 篇文章 0 订阅

第6章DAO和增删改查通用方法

DAO:Data Access Object访问数据信息的类和接口,包括了对数据的CRUD(Create、Retrival、Update、Delete),而不包含任何业务相关的信息

作用:为了实现功能的模块化,更有利于代码的维护和升级。

1、练习

1.1表和JavaBean

 

public class Department {

         private Integer id;

         private String name;

         private String description;

....

}

int,double等在Java中都用包装类,因为mysql中的所有类型都可能是NULL,而Java只有引用数据类型才有NULL值

public class Employee {

         private Integer eid;

         private String ename;

         private String tel;

         private String gender;//mysql中用char,在Java中也要用String

         private Double salary;

         private Double commissionPct;

         private Date birthday;//此处用String或Date

         private Date hiredate;

         private Integer jobId;

         private String email;

         private Integer mid;

         private String address;

         private String nativePlace;

         private Integer did;

...

}

 

 

1.2 DAO接口

package com.atguigu.dao;

 

import java.util.List;

 

import com.atguigu.bean.Department;

 

public interface DepartmentDAO {

    void addDepartment(Department department)throws Exception;

    void updateDepartment(Department department)throws Exception;

    void deleteById(String did)throws Exception;

    Department getById(String did)throws Exception;

    List<Department> getAll()throws Exception;

}

 

package com.atguigu.dao;

 

import java.util.List;

import java.util.Map;

 

import com.atguigu.bean.Employee;

 

public interface EmployeeDAO {

    void addEmployee(Employee emp)throws Exception;

    void updateEmployee(Employee emp)throws Exception;

    void deleteById(String eid)throws Exception;

    Employee getById(String eid)throws Exception;

    List<Employee> getAll()throws Exception;

    Long getCount()throws Exception;

    List<Employee> getAll(int page, int pageSize)throws Exception;

    Double getMaxSalary()throws Exception;

    Map<Integer,Double> getAvgSalaryByDid()throws Exception;

}

 

1.3 DAO实现类

(1)原生版

package com.atguigu.dao.impl.original;

 

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.ArrayList;

import java.util.List;

 

import com.atguigu.bean.Department;

import com.atguigu.dao.DepartmentDAO;

import com.atguigu.utils.JDBCUtils;

 

public class DepartmentDAOImpl implements DepartmentDAO{

 

    @Override

    public void addDepartment(Department department) throws Exception {

        Connection conn = JDBCUtils.getConnection();

       

        String sql = "INSERT INTO t_department(did,dname,description) VALUES(NULL,?,?)";

        PreparedStatement pst = conn.prepareStatement(sql);

        pst.setString(1, department.getName());

        pst.setString(2, department.getDescription());

        pst.executeUpdate();

       

        JDBCUtils.closeQuietly(pst, conn);

    }

 

    @Override

    public void updateDepartment(Department department) throws Exception {

        Connection conn = JDBCUtils.getConnection();

       

        String sql = "UPDATE t_department SET dname = ?,description = ? WHERE did = ?";

        PreparedStatement pst = conn.prepareStatement(sql);

        pst.setString(1, department.getName());

        pst.setString(2, department.getDescription());

        pst.setInt(3, department.getId());

        pst.executeUpdate();

       

        JDBCUtils.closeQuietly(pst, conn);

    }

 

    @Override

    public void deleteById(String did) throws Exception {

        Connection conn = JDBCUtils.getConnection();

       

        String sql = "DELETE FROM t_department WHERE did = ?";

        PreparedStatement pst = conn.prepareStatement(sql);

        pst.setString(1, did);

        pst.executeUpdate();

       

        JDBCUtils.closeQuietly(pst, conn);

    }

 

    @Override

    public Department getById(String did) throws Exception {

       

        Connection conn = JDBCUtils.getConnection();

       

        String sql = "SELECT did,dname,description FROM t_department WHERE did = ?";

        PreparedStatement pst = conn.prepareStatement(sql);

        pst.setString(1, did);

       

        ResultSet rs = pst.executeQuery();

        Department dept = null;

        if(rs.next()){

            dept = new Department();

            dept.setId(rs.getInt("did"));

            dept.setName(rs.getString("dname"));

            dept.setDescription(rs.getString("description"));

        }

       

        JDBCUtils.closeQuietly(rs, pst, conn);

       

        return dept;

    }

 

    @Override

    public List<Department> getAll() throws Exception {

        Connection conn = JDBCUtils.getConnection();

       

        String sql = "SELECT did,dname,description FROM t_department";

        PreparedStatement pst = conn.prepareStatement(sql);

       

        ResultSet rs = pst.executeQuery();

        ArrayList<Department> list = new ArrayList<Department>();

        while(rs.next()){

            Department dept = new Department();

            dept.setId(rs.getInt("did"));

            dept.setName(rs.getString("dname"));

            dept.setDescription(rs.getString("description"));

            list.add(dept);

        }

       

        JDBCUtils.closeQuietly(rs, pst, conn);

       

        return list;

    }

 

}

 

 

 

本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<<尚硅谷_佟刚_JDBC 视频教程>> ------------------------------------ 视频特点: 除了常规的 JDBC 技术外,更涵盖 <利用反射及 JDBC 元数据编写通用的查询方法>、<使用 DBUtils 工具类>、<DAO设计模式>、<编写通用的 DAO 接口实现类> 等企业级开发内容。源码级讲授 DBUtils 工具类的实现思想,DEBUG 调试其运行过程。示例代码专业、实用,使学员能站在更高层次上深入理解 JDBC 技术。 ------------------------------------ 视频内容: 1. 获取数据库连接(视频1-2) 2. 使用 Statement 执行更新操作(视频3) 3. 使用 ResultSet 执行查询操作(视频4) 4. 以面向对象的思想编写 JDBC 应用程序(视频5-6) 5. 使用 PreparedStatement(视频7) 6. 利用反射及 JDBC 元数据编写通用的查询方法(视频8-9) 7. DAO 设计模式(视频10-12) 8. JDBC 元数据(视频13) 9. 获取插入记录的主键值(视频14) 10. 处理 Blob(视频15) 11. 处理事务 & 事务的隔离级别(视频16-17) 12. 批量处理(视频18) 13. 数据库连接池 & C3P0 & DBCP(视频19-20) 14. 使用 DBUtils(视频21-23) 15. 使用 JDBC 调用函数 & 存储过程(视频24) 16. 课件及源码 ------------------------------------ 讲师:佟刚 尚硅谷教学总监    学员昵称"刚哥",在IT教育培训行业摸爬滚打多年,培养过N多学员,一个对教学追求完美、视学员为家人的靠谱老男人。 资深项目经理、技术讲师、SUN SCJP、SCWCD、原工信部移动云计算教育培训中心教学总监。十年软件开发经验: 参与完成辽宁某高校远程教学管理系统、慧文信息门户系统、日本麦卡尔超市管理系统、崎玉市外来人口登记系统、深海视频会议管理系统、仙台市宫城县日常事务系统等项目的设计和开发。六年软件培训经验:曾在中国AOP全球外包排名第一的公司任Java、Oracle培训讲师、负责对公司员工新技术培训;曾任花旗银行特约JavaEE培训讲师;某部队研究所JavaEE培训;曾受聘为北航、厦门大学移动云计算专业教学主任, 并主讲Java、Android、iPhone课程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值