DAO设计
没有使用DAO存在的问题:
多个地方都要都同时做CRUD操作时,重复的代码就会很多
什么是DAO
Data Access Object(数据存取对象)
位于业务逻辑和持久化数据之间
实现对持久化数据的访问
ORM
什么是ORM
对象关系映射
将关系数据库中表中的记录映射成为对象,以对象的形式展现
因此ORM的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作
对应关系
domain
什么是domain
就是一个类
符合JavaBean规范一个类当中有字段和该字段的getter
与Setter
方法
作用:是用户与数据库交互的核心中转站
domain类如图:
保持数据
获取数据
以获取数据为例:
Student.class
public class Student {
Integer id;
String name;
Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
StudentDao.java
package com.iris.jdbc.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class StudentDao {
//保存
public void save(Student stu) {
// 2. 获取对象
String url = "jdbc:mysql://localhost:3306/jdbc_db?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"; //url 数据库地址
String user="root"; //user 数据库用户名
String password="13718407978" ; //password 数据库密码
Connection conn = null;
Statement st = null;
//try{}catch(Exception e) {} finally {} 异常处理
try {
//加载注册驱动
Class.forName("com.mysql.cj.jdbc.Driver"); //JAVA1.6之后可以不写此语句,根据开发环境类型而定
//连接数据库
conn = DriverManager.getConnection(url, user, password);
// 3.創建SQL语句
//字符串拼接
Integer id=stu.getId();
String name=stu.getName();
Integer age = stu.getAge();
String sql = "insert into student values("+id+",'"+name+"',"+age+")";
System.out.println(sql);
st = conn.createStatement();
//4. 执行sql
int row = st.executeUpdate(sql);
System.out.println(row);
}catch(Exception e) {
} finally {
//5. 释放资源
if(st != null) {
try {
st.close();
}catch(Exception e) {
e.printStackTrace(); //打印异常
}
}
if(conn != null) {
try {
conn.close();
}catch(Exception e) {
e.printStackTrace(); //打印异常
}
}
}
}
//获取
//更新
}
Test.java
public class Test {
public static void main(String[] args) {
Student stu = new Student();
stu.setId(1);
stu.setAge(30);
stu.setName("李白");
//加载驱动
//连接数据库
//创建语句
//执行语句
//释放资源
StudentDao dao = new StudentDao();
dao.save(stu);
}
}