MYSQL和DAO知识总结

java 连接数据库的步骤

1.加载驱动

Class.forName(数据库驱动名);

java 中的数据库驱动名:“com.mysql.jdbc.Driver”
JavaSE项目中可以省略 , JavaWeb项目必须编写此步骤

2.建立数据库连接

使用DriverManager类的getConnection()静态方法来获取数据库的连接对象,语法如下:

Conncetion conn = DriverManager.getConnection(String url,String username,String password);

url --> 数据库连接的字符串,字符串的连接格式: 主协议:子协议://ip地址:端口号/数据库名称 //
username --> 数据库的账号
password --> 数据库的密码

  • mysql的连接地址:“jdbc:mysql://localhost:3306/company?useUnicode=true&charcterEncoding=uft-8”,“root”,“123”
  • oracle的连接地址: jdbc:oracle:thin:@localhost:1521:ORCL

3.创建Statement对象

想对数据库进行操作,就必须执行sql语句。在java中,想给数据库传输sql语句,就要使用Statement对象进行封装,才能发送给数据库。但Statement也不是直接调用的,而是通过Connection对象所提供的方法来创建各种Statement对象的。语法如下:

  1. 执行静态SQL语句,通常通过Statement实例实现;
  2. 执行动态SQL语句,通常通过PreparedStatement实例实现;
  3. 执行数据库存储过程,通常通过CallableStatement实例实现。

具体的实现方式:

Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql);
CallableStatement cstmt =   con.prepareCall("{CALL demoSp(? , ?)}")

4.执行sql语句

获取Statement对象后,就要开始执行sql语句了。这时候就可以调用对象的不同方法来对数据库进行操作。如果其中产生了结果集,就要对结果集进行封装,在java中,是使用ResultSet类来对结果集进行封装的,且会返回一个结果集对象。

Statement接口的三种方法

Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate和execute。

  1. ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象;
  2. int executeUpdate(String sqlString):用于执行INSERT、UPDATE或 DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等;
  3. execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。
    具体实现的代码:
ResultSet rs = stmt.executeQuery("sql语句") ;   
int rows = stmt.executeUpdate("sql语句") ;   
boolean flag = stmt.execute(String sql) ;  

5.使用结果集

结果集一般分为两种情况:

  1. 执行更新返回的是本次操作影响到的记录数;
int row = state.executeUpdate();
  1. 执行查询返回的结果是一个ResultSet对象。
while(rs.next()){
    
       
	String name1 = rs.getString("name") ;   
    String name2 = rs.getString(1) ;   
}  

上面这两行代码执行的目的都是一样的,获取数据库中的name字符的数据,但获取name2的速度比name1的速度快。(列是从左往右的,从1开始的)

6.关闭数据库

  1. 关闭结果集; rs.close();
  2. 关闭Statement对象; state.close();
  3. 关闭conn连接。coon.close();

DAO工厂

在这里插入图片描述

1.设计DAO接口

public interface IDao {
    
    
	public void createMethod();
}

在里面设计增、删、改、查的抽象方法

2.设计接口的实现类DAOJdbc

public class DaoJdbc implements IDao {
    
    
	@Override
	public void createMethod() {
    
    
		System.out.println("DaoJdbc::create()");
	}
}

3.设计单例的工厂

单例DAO工厂的特点:

  1. 单例类只能有一个实例;
  2. 单例类必须自己给自己创建一个唯一的实例;
  3. 单例类必须给所有其他对象提供这一实例
public class DaoFactory {
    
    
	//1.私有化构造函数,不能让外界进行对象创建
	private DaoFactory(){
    
    }
	
	//2.这个类必须自动向整个系统提供这个实例对象
	public static DaoFactory getDaoFactory(){
    
    
		return daoFactory;
	}
	
	//3.单例类必须执行创建
	private static DaoFactory daoFactory;
	public IDao getDao(){
    
    
		//项目总根据需求对这里的内容进行修改,决定工厂提供什么样的产品
		return new DaoJdbc();
	}
}

4.业务层


ublic class Service {
    
    
	public void create(){
    
    
		DaoFactory daoFactory = DaoFactory.getDaoFactory();
		IDao iDao = daoFactory.getDao();
		iDao.create();
	}

5.测试函数

public class Demo1 {
    
    
	public static void main(String[] args) {
    
    
		Service ser = new Service();
		ser.createMethod();
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_46687295/article/details/106725610