Java 之 JDBC

JDBC 是用于在 Java 语言编程中与数据库连接的 API . JDBC 是一个规范,它提供了一整套接口,允许以一种可移植的访问底层数据API 。使用 JDBC驱动程序 来访问数据库,并用于存储数据到数据库中.

Java 之 JDBC
Java 之 JDBC
Java 之 JDBC

解释上面两幅图:

java应用程序通过JDBC API首先连接到JDBC Driver,这些JDBC驱动器都是由各大数据库厂家针对JDBC提供的,我们可以在网上下载jar包来使用,然后通过JDBC驱动器就能连接到我们的数据库了。

第一步 添加驱动

1.在项目当中创建一个文件夹为lib
2.把Mysql驱动包复制到该文件夹下
3.builder path 编译路径
复制代码

第二步 连接到数据库

package con.meils.jdbc.conn;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionClass {

	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		// TODO Auto-generated method stub
		
		
		// 1、加载驱动
		// 把com.mysql.jdbc.Driver这份字节码加载进JVM
		// 当一份字节码加载进JVM的时候,就会执行字节码文件中的静态代码块
		// 这里加载该字节码之后会实例化一个驱动器
		Class.forName("com.mysql.jdbc.Driver");
		
		// 2、连接
		String url = "jdbc:mysql://localhost:3306/mytest";
		String username = "root";
		String password = "zjj19970517";
		Connection connection = DriverManager.getConnection(url, username, password);
		
		// 3、验证连接
		System.out.println(connection); // 如果有输出,表明连接成功
	}

}

复制代码

第三步 操作数据库创建表

package con.meils.jdbc.ddl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class CreateTable {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		// 1/加载驱动
		// 把com.mysql.jdbc.Driver这份字节码加载进JVM
		// 当一份字节码加载进JVM的时候,就会执行字节码文件中的静态代码块
		// 这里加载该字节码之后会实例化一个驱动器
		Class.forName("com.mysql.jdbc.Driver");

		String url = "jdbc:mysql://localhost:3306/jdbc_db";
		String username = "root";
		String password = "zjj19970517";
		// 2/ 连接数据库
		Connection connection = DriverManager.getConnection(url, username, password);
		
		
		// 3/创建sql语句
		String sql = "create table stu (id int , name varchar(20), age int)";
		
		// 4/执行sql语句
		Statement st = connection.createStatement();
		int row = st.executeUpdate(sql);
		
		// 5/释放
		st.close();
		connection.close();
		
		
		
	}

}

复制代码
Java 之 JDBC

为什么要释放资源呢?

Java 之 JDBC

第四步 插入数据

package con.meils.jdbc.dml;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class InsertClass {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		// ================ 插入数据 ================
		
		Connection conn = null;
		
		Statement st = null;
		
		
		try {
			// 1、加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			
			// 2、创建连接
			String url = "jdbc:mysql://localhost:3306/mytest";
			String user = "root";
			String password = "zjj19970517";
			conn = DriverManager.getConnection(url, user, password);
			
			// 3、创建sql语句
			String sql = "insert into stu values(1, 'zjj', 20)";
			st = conn.createStatement();
			
			// 4、执行语句
			int row = st.executeUpdate(sql);
			System.out.println(row);
		}catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 5、释放
			if(st!=null) {
				try {
					st.close();
				}catch (Exception e) {
					e.printStackTrace();
				}
			}
			if(conn!=null) {
				try {
					conn.close();
				}catch (Exception e) {
					e.printStackTrace();
				}
			}
			
			
		}
		
	}

}

复制代码

第五步 查询操作

Java 之 JDBC
package con.meils.jdbc.dql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class QueryClass {

	public static void main(String[] args) throws SQLException, ClassNotFoundException {
		// TODO Auto-generated method stub

		// ================ 查询数据 ================
		
		// 1/加载驱动
				// 把com.mysql.jdbc.Driver这份字节码加载进JVM
				// 当一份字节码加载进JVM的时候,就会执行字节码文件中的静态代码块
				// 这里加载该字节码之后会实例化一个驱动器
				Class.forName("com.mysql.jdbc.Driver");

				String url = "jdbc:mysql://localhost:3306/mytest";
				String username = "root";
				String password = "zjj19970517";
				// 2/ 连接数据库
				Connection connection = DriverManager.getConnection(url, username, password);
				
				
				// 3/创建sql语句 
				String sql = "select count(*) as total from stu"; // 查询一共有几行数据
				
				// 4/执行sql语句
				Statement st = connection.createStatement();
				ResultSet rs = st.executeQuery(sql);
				
				if(rs.next()) {
					int count = rs.getInt("total");
					System.out.println(count); // 1
				}
				
				// 5/释放
				st.close();
				connection.close();
	}

}

复制代码
Java 之 JDBC
Java 之 JDBC
Java 之 JDBC

数据类型对照表:

Java 之 JDBC

上面我们基本学会了如何与数据库打交道,但是这样使用存在许多的弊端,比如:每一步操作都进行一次数据库连接,造成浪费,所以我们在实际中要使用DAO思想来处理。

二、DAO设计

1、什么是DAO

Java 之 JDBC

DAO(Data Access Object)数据存储对象,介于业务逻辑层和持久层之间,实现持久化数据访问。

不使用DAO的时候:

Java 之 JDBC

使用DAO的情况:

Java 之 JDBC

三、ORM映射关系

Java 之 JDBC

四、Domain

1、认识domain

Java 之 JDBC

2、domain类

Java 之 JDBC

3、保存数据

Java 之 JDBC

4、获取数据

Java 之 JDBC

五、DAO设计规范

Java 之 JDBC

案例

我们可以编写一个DAO接口,定义了常用的数据库操作方法,这时候我们同时会连接多个数据库,比如是mysql 和 oracle ,我们可以分别实现oracleDao和mysqlDao两个类,不同类里面定义不同的操作数据库的代码,实现的功能确实相同的。

Java 之 JDBC

所以面向接口编程是很重要的,也是一个很好的方式。

原文 

https://juejin.im/post/5c75e6666fb9a049cd54dc88

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Java 之 JDBC

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址