一、认识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、开发步骤
目录如下
内容实现: