Java Dao模式通过JDBC连接数据库的操作

Java程序访问数据库:

1、获取数据库厂商提供的驱动(jdbc接口的实现类)

如ojdbc14.jar——Oracle数据库驱动jar包

mysql-connector-java-5.1.8-bin.jar——MySQL数据库驱动jar包

自己去网上下载就行。

2、使用JDBC的API访问数据库

连接、SQL语句执行、结果

java.sql.Driver:各个数据库厂商需要实现该接口,驱动的标记

java.sql.Connection:封装和数据库的连接

java.sql.Statement:封装需要执行的SQL语句

java.sql.ResultSet:封装查询的结果集

3、JDBC编程步骤

step1——加载驱动

step2——获取连接对象

step3——执行SQL语句

step4——处理结果集

step5——关闭资源

4、下面给出连接数据库的工具类(自己写的连接MySql数据库,如要连接Oeacle可修改对应参数)

package com.day03;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class ConnectionUtils {

    // 线程单例
    private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
    private static String url;
    private static String driver;
    private static String username;
    private static String password;

    static {
        Properties props = new Properties();
        try {
            // 从属性文件中读取数据库配置信息,以加载类的方式加载配置文件
            props.load(
                    ConnectionUtils.class.getClassLoader()
                    .getResourceAsStream("com/day03/db_mysql.properties"));

        } catch (IOException e) {
        }
        if (props != null) {
            url = props.getProperty("url");
            driver = props.getProperty("driver");
            username = props.getProperty("username");
            password = props.getProperty("password");

            // 装载并注册数据库驱动
            try {
                Class.forName(driver);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    }

    public static Connection getConnection() throws SQLException {
        Connection con = tl.get();
        if (con == null) {
            con = DriverManager.getConnection(url, username, password);
            tl.set(con);
        }
        return con;
    }

    public static void closeConnection() {
        Connection con = tl.get();
        try {
            if (con != null) {
                con.close();
                tl.set(null);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void closeStatement(Statement stmt) {
        try {
            if (stmt != null) {
                stmt.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void closeResultSet(ResultSet rs) {
        try {
            if (rs != null) {
                rs.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void closeAll(Statement stmt, ResultSet rs){
        closeConnection();
        closeStatement(stmt);
        closeResultSet(rs);
    }

    public static void main(String[] args) throws Exception{
        System.out.println(ConnectionUtils.getConnection());
    }

}

5、配置参数文件db_mysql.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=root

6、Dao模式操作数据库下面是代码示例

1)Emp.java

//实体类
public class Emp {
    private int id;
    private String name;
    private double salary;
    public int getId() {
        return id;
    }
    @Override
    public String toString() {
        return "Emp [id=" + id + ", name=" + name + ", salary=" + salary + "]";
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getSalary() {
        return salary;
    }
    public void setSalary(double salary) {
        this.salary = salary;
    }
    public Emp(int id, String name, double salary) {
        super();
        this.id = id;
        this.name = name;
        this.salary = salary;
    }
    public Emp() {
        super();
    }
    public Emp(String name, double salary) {
        super();
        this.name = name;
        this.salary = salary;
    }
}

2)Dao接口类

import java.util.List;

public interface EmpDao {
    List<Emp> findAllEmp() throws Exception;
}

3)工厂类

public class EmpDaoFactory {
    // 读取文件中实现类的类名,通过反射实例化
    public static EmpDao getEmpDao(){
        return new EmpDaoMySQL();
    }
}

4)Dao接口实现类

public class EmpDaoMySQL implements EmpDao{
    public static final String FIND_ALL_EMP = "select * from t_emp";//查询语句

    public List<Emp> findAllEmp() throws Exception{
        List<Emp> empList = new ArrayList<Emp>();
        Connection conn = ConnectionUtils.getConnection();
        PreparedStatement stmt = conn.prepareStatement(FIND_ALL_EMP);
        ResultSet rs = stmt.executeQuery();
        while(rs.next()){
            int id = rs.getInt(1);
            String name = rs.getString(2);
            double salary = rs.getDouble(3);
            Emp emp = new Emp(id, name, salary);
            empList.add(emp);
        }
        ConnectionUtils.closeAll(stmt, rs);
        return empList;
    }
}

5)测试类

public class EmpBiz {
    public static void main(String[] args) throws Exception{
        EmpDao dao = EmpDaoFactory.getEmpDao();
        List<Emp> empList = dao.findAllEmp();
        for(Emp e : empList){
            System.out.println(e);
        }
    }
}

到此基本实现了Dao模式通过JDBC操做数据库了。

时间: 2024-12-25 14:57:07

Java Dao模式通过JDBC连接数据库的操作的相关文章

JDBC初学,DAO模式

一.用eclipse连接mysql数据库: 要先添加一个文件:https://www.cnblogs.com/caiwenjing/p/8079227.html 二.开始写连接数据库的代码: 因为连接数据库的操作一般是公用的,所以写在叫做util的包里 像实体类一般写在叫做entity包里面 测试类(JUnit里讲解过怎么使用)写在叫做test的包里面 package com.util; import java.sql.*; public class ConnectionUtil { /** *

java 关于JDBC和DAO模式使用

JDBC(全称:Java Data Base Connectivity)是java数据库连接简称 ,提供连接各种数据库的能力 JDBC API主要的功能: 1.与数据库建立连接 2.执行SQL语句 3.处理结果 JDBC关键字的使用: 1.DriverManager:依据数据库的不同,管理JDBC驱动 2.Connection:负责连接数据库并且担任传送数据库的任务 3.Statement:由Connection产生.负责执行SQL语句 4.ResultSet:负责保存Statement执行后所

java中使用jdbc连接数据库操作

先贴代码,在做说明 import java.sql.*; import java.util.ArrayList; import java.util.List; public class Conn { private static final String DRIVER = "com.mysql.cj.jdbc.Driver";//mysql 8 的驱动 private static final String DR_URL = "jdbc:mysql://localhost:3

Java+MyEclipse+Tomcat (五)DAO和Java Bean实现数据库和界面分开操作

正如前面一篇文章的介绍,当使用Servlet提交表单和JSP数据库查询时,总是相互交叉着的处理,要么在JSP中通过<%...%>内嵌Java代码操作数据库,要么JSP中通过Post方法提交表单Form,在Java中通过Servlet获取请求/响应,再通过Java中out.println("<HTML>...")输出数据库中值. 此篇文章主要讲述通过DAO和Java Bean操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.参考前文: Java+My

web day17 JDBC入门,DAO模式mySQL时间类型转换,批处理

JDBC入门 1.JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库. 2.JDBC原理 最终得出的结论是,由SUN提供一套访问数据库的规范(就是一组接口),并提供连接数据库的协议标准,然后各个数据库厂商会遵循SUN的规范提供一套访问自己公司的数据库服务器的API出现.SUN提供的规范命名为JDBC,而各个厂商提供的,遵循了JDBC规范的,可以访问自己数据库的API被称之为驱动! 3.JDBC核心类(接口)介绍 JDBC中

使用Java实现数据库编程—08 DAO 模式

1.        数据持久化:将程序中的数据在瞬时状态和持久状态间转换的机制即为数据持久化: 2.        持久化的实现方式:数据库.普通文件.XML文件: 3.        JDBC封装:采用面向接口编程,可以降低代码间的耦合性: 为了提高代码的维护性和扩展性,我们使用JDBC进行封装数据,: 先定义统一的API,将操作数据的代码抽象到接口中,业务逻辑代码只需要调用这些接口的实现类的对象,就可以实现对数据的访问了, 从而隔离实现的细节,采用面向接口编程,可以降低代码间的耦合度,提高代

JDBC、单元测试、DAO模式

JDBC简介 1.什么是JDBC? JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API(工具).JDBC是Java访问数据库的标准规范. 规范:在java中的直接体现是接口 作用:为不同关系型数据库提供统一的访问,由一组用java语言编写的接口和工具类组成,由各大数据库厂商实现对应接口 2.连接数据库时要先加载驱动 什么是驱动? 两个设备要进行通信时,需要满足一定通信数据格式,数据格式由设备提供商规定,设备提供商为设备提

JDBC高级应用 - DAO模式与JavaBean

DAO模式与JavaBean DAO数据库操作对象(Data Access Object):负责连接数据库,通过集合获取数据库中的数据,对数据进行CRUD的操作. DAO出现之前,操作数据库的代码与业务代码都出现在JSP或Servlet中,不利于业务代码的分离.DAO出现后改变了这一情况,所有与数据库相关的操作都被拿到了DAO层实现,Servlet或JSP中只操作JavaBean与DAO层,而DAO只操作数据库. 事务实例:转账 张三转200元到李四的银行账户,李四要买英雄联盟皮肤. 要分两个步

Java中JDBC连接数据库(MySQL)

 JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能.(包括事务处理,批量更新等) 把十一个功能都放在一起. 安装下载的数据库驱动程序jar包,不同的数据库需要不同的驱动程序(这本该是第一步,但是由于属于安装类,所以我们放在最后) 一.JDBC连接数据库(编辑)步骤(主要有六个步骤).  1.注册驱动: Class.forName("com.mysql.jdbc.Driver");显示的