尚硅谷JDBC

本文介绍了Java中的DAO模式,探讨了其作为数据访问对象的角色,用于CRUD操作,分离业务逻辑。内容包括:练习部分,涉及表和JavaBean的设计,DAO接口的定义以及DAO实现类的编写,特别是原生版的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

    }

 

}

 

 

 

 


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

### 硅谷 JDBC 资料获取方法 #### 通过官方渠道获取资料 对于希望学习硅谷JDBC相关内容的学生来说,最推荐的方式是从官方提供的资源入手。根据描述,存在一个名为“资料”的文件夹内含有所需的jar包[^1]。通常情况下,这类教育机构会在其官方网站或指定的学习平台上提供完整的课程材料下载链接。 #### 获取步骤说明 - 访问硅谷官网或者对应的在线学习平台。 - 登录账号并找到与`硅谷JDBC实战教程(一套掌握jdbc,JDK17+MySQL8)`相关的课程页面。 - 查看课程详情页是否有直接的资料下载入口;如果有的话,则可以直接点击下载压缩包。 - 如果没有明显的下载按钮,尝试联系客服询问如何获取配套的教学素材。 #### 使用B站视频辅助学习 除了上述提到的文档外,还可以利用提供的[Bilibili视频网址](#)作为补充教学工具。观看视频的同时做笔记能够加深对知识点的理解,并且视频中可能会提及更多关于哪里可以获得最新版教材的信息。 #### 注意事项 确保所使用的任何第三方网站都是安全可靠的,避免从不可信来源下载可能携带恶意软件的内容。同时也要注意版权问题,尊重作者劳动成果只用于个人学习目的。 ```python import os def download_jdbc_materials(): """ 模拟函数:指导用户前往正确位置下载所需资料 Returns: str: 提示信息 """ official_website = "https://www.atguigu.com/" return f"请访问 {official_website} 并按照指引查找相关课程下的'资料'部分以下载所需的JAR包和其他学习材料" print(download_jdbc_materials()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值