一, 认识 JDBC
JDBC 是用于在 Java 语言编程中与数据库连接的 API.JDBC 是一个规范, 它提供了一整套接口, 允许以一种可移植的访问底层数据库 API. 使用 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();
- }
- }
为什么要释放资源呢?
第四步 插入数据
- 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();
- }
- }
- }
- }
- }
第五步 查询操作
- 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();
- }
- }
数据类型对照表:
上面我们基本学会了如何与数据库打交道, 但是这样使用存在许多的弊端, 比如: 每一步操作都进行一次数据库连接, 造成浪费, 所以我们在实际中要使用 DAO 思想来处理.
二, DAO 设计
1, 什么是 DAO
DAO(Data Access Object) 数据存储对象, 介于业务逻辑层和持久层之间, 实现持久化数据访问.
不使用 DAO 的时候:
使用 DAO 的情况:
三, ORM 映射关系
四, Domain
1, 认识 domain
2,domain 类
3, 保存数据
4, 获取数据
五, DAO 设计规范
案例
我们可以编写一个 DAO 接口, 定义了常用的数据库操作方法, 这时候我们同时会连接多个数据库, 比如是 MySQL 和 oracle , 我们可以分别实现 oracleDao 和 mysqlDao 两个类, 不同类里面定义不同的操作数据库的代码, 实现的功能确实相同的.
所以面向接口编程是很重要的, 也是一个很好的方式.
1, 包命名规范
2, 类命名规范
3, 开发步骤
目录如下
内容实现:
来源: https://juejin.im/post/5c75e6666fb9a049cd54dc88