JDBC 进阶(未完结)
一 实体类和ORM
对指定的对象的属性封装
package com.ax.advance.pojo;
public class Employee {
private Integer id;
private String degree;
private String major;
private String school1;
private String school2;
private String school3;
private Integer userId;
public Employee(Integer id, String degree, String major, String school1, String school2, String school3, Integer userId) {
this.id = id;
this.degree = degree;
this.major = major;
this.school1 = school1;
this.school2 = school2;
this.school3 = school3;
this.userId = userId;
}
public Employee() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDegree() {
return degree;
}
public void setDegree(String degree) {
this.degree = degree;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public String getSchool1() {
return school1;
}
public void setSchool1(String school1) {
this.school1 = school1;
}
public String getSchool2() {
return school2;
}
public void setSchool2(String school2) {
this.school2 = school2;
}
public String getSchool3() {
return school3;
}
public void setSchool3(String school3) {
this.school3 = school3;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", degree='" + degree + '\'' +
", major='" + major + '\'' +
", school1='" + school1 + '\'' +
", school2='" + school2 + '\'' +
", school3='" + school3 + '\'' +
", userId=" + userId +
'}';
}
}
数据封装在对象当中
package com.ax.advance;
import com.ax.advance.pojo.Employee;
import java.sql.*;
public class JDBCa {
public static void main(String[] args) throws SQLException {
//获取连接对象
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/itheima", "root", "tan2179432748");
//预编译SQL语句
PreparedStatement preparedStatement = connection.prepareStatement("select * from tb_user_edu where degree = ?");
//为问号占位符赋值,并执行SQL语句,接收返回的结果集
preparedStatement.setString(1, "本科");
//处理结果集
ResultSet resultSet = preparedStatement.executeQuery();
//遍历结果集
Employee employee = null;
while (resultSet.next()) {
int id = resultSet.getInt("id");
String degree = resultSet.getString("degree");
String major = resultSet.getString("major");
String primaryschool = resultSet.getString("primaryschool");
String middleschool = resultSet.getString("middleschool");
String university = resultSet.getString("university");
int userId = resultSet.getInt("userid");
//封装对象
employee = new Employee(id, degree, major, primaryschool, middleschool, university, userId);
System.out.println(employee);
}
//资源的释放(先开后放)
resultSet.close();
preparedStatement.close();
connection.close();
}
}
对象再封装在集合当中
package com.ax.advance;
import com.ax.advance.pojo.Employee;
import java.sql.*;
import java.util.ArrayList;
public class JDBCb {
public static void main(String[] args) throws SQLException {
//获取连接对象
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/itheima", "root", "tan2179432748");
//预编译SQL语句
PreparedStatement preparedStatement = connection.prepareStatement("select * from tb_user_edu where degree = ?");
//为问号占位符赋值,并执行SQL语句,接收返回的结果集
preparedStatement.setString(1, "本科");
//处理结果集
ResultSet resultSet = preparedStatement.executeQuery();
//创建集合存储对象
ArrayList<Employee> employees = new ArrayList<>();
//遍历结果集
Employee employee = null;
while (resultSet.next()) {
employee = new Employee();
employee.setId(resultSet.getInt("id"));
employee.setDegree(resultSet.getString("degree"));
employee.setMajor(resultSet.getString("major"));
employee.setSchool1(resultSet.getString("primaryschool"));
employee.setSchool2(resultSet.getString("middleschool"));
employee.setSchool3(resultSet.getString("university"));
employee.setUserId(resultSet.getInt("userid"));
employees.add(employee);
}
//输出
employees.forEach(System.out::println);
}
}
二 主键回显
主键回显指在数据库插入操作后,自动获取数据库生成的主键值(如自增ID、序列值等),并将其回填到程序中的对象或变量中。其核心目的是解决多表关联插入时主键依赖问题,例如:主表插入后需获取自增ID,才能将子表数据的外键关联到该ID