第一部分---------数据库 直接手动建表 手动添加数据 在这里就不写具体建表步骤
第二部分 --------项目编写
1.(实体类)
FinancingProduct
package com.qhit.demo.entry;
import java.io.Serializable;
/**
* @author gzh
* @date 2022/3/8 14:34
*/
public class FinancingProduct implements Serializable {
private String id;
private String risk;
private String income;
private String saleStarting;
private String saleEnd;
private String end;
public FinancingProduct(String id, String risk, String income, String saleStarting, String saleEnd, String end) {
this.id = id;
this.risk = risk;
this.income = income;
this.saleStarting = saleStarting;
this.saleEnd = saleEnd;
this.end = end;
}
public FinancingProduct() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getRisk() {
return risk;
}
public void setRisk(String risk) {
this.risk = risk;
}
public String getIncome() {
return income;
}
public void setIncome(String income) {
this.income = income;
}
public String getSaleStarting() {
return saleStarting;
}
public void setSaleStarting(String saleStarting) {
this.saleStarting = saleStarting;
}
public String getSaleEnd() {
return saleEnd;
}
public void setSaleEnd(String saleEnd) {
this.saleEnd = saleEnd;
}
public String getEnd() {
return end;
}
public void setEnd(String end) {
this.end = end;
}
@Override
public String toString() {
return "FinancingProduct{" +
"id='" + id + '\'' +
", risk='" + risk + '\'' +
", income='" + income + '\'' +
", saleStarting='" + saleStarting + '\'' +
", saleEnd='" + saleEnd + '\'' +
", end='" + end + '\'' +
'}';
}
}
2.dao层
(baseDao)
package com.qhit.demo.dao;
import com.qhit.demo.utils.JDBCUtils;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;
/*
* 封装了数据库增删改查操作
*
*
* */
public abstract class BaseDAO {
//通用的增删改操作 vsersion2.0(考虑上事务)
public int update(Connection conn, String sql, Object...args) {
PreparedStatement ps =null;
try {
//预编译SQL语句,返回PrepareStatement的实例
ps = conn.prepareStatement(sql);
//填充占位符
for (int i = 0; i <args.length ; i++) {
ps.setObject(i+1,args[i]);
}
//执行
return ps.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
//资源关闭
JDBCUtils.closeResourse(null,ps);
}
return 0;
}
//通用查询返回到集合中version2(考虑上事务)
public <T> List<T> getFoeList(Connection conn, Class<T> clazz , String sql, Object...args) {
PreparedStatement ps=null;
ResultSet rs = null;
try {
//预编译sql语句返回PreparedStatement
ps = conn.prepareStatement(sql);
//填充占位符
for (int i = 0; i <args.length ; i++) {
ps.setObject(i+1,args[i]);
}
//3执行并返回结果集
rs = ps.executeQuery();
//获得结果集的元数据:ResultSetMetaData
ResultSetMetaData rsmd = rs.getMetaData();
//通过ResultSetMetaData获取结果集中的列数;
int columnCount = rsmd.getColumnCount();
ArrayList<T> ts = new ArrayList<>();
while (rs.next()){
T t = clazz.newInstance();
//处理结果集一行数据中的每一列
for (int i = 0; i <columnCount ; i++) {
//获得每个列的列名
String columnLabel = rsmd.getColumnName(i + 1);
//获得列值
Object columvalue = rs.getObject(columnLabel);
//给student对象指定的columName属性,赋值为columvalue , 通过反射
Field field = clazz.getDeclaredField(columnLabel);
field.setAccessible(true);
field.set(t,columvalue);
}
ts.add(t);
}
return ts;
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.closeResourse1(null,ps,rs);
}
return null;
}
//通用查询返回一条记录version2(考虑上事务)
public <T> T getInatance(Connection conn, Class<T> clazz, String sql, Object...args){
PreparedStatement ps=null;
ResultSet rs = null;
try {
//获取连接
//预编译sql语句返回PreparedStatement
ps = conn.prepareStatement(sql);
//填充占位符
for (int i = 0; i <args.length ; i++) {
ps.setObject(i+1,args[i]);
}
//3执行并返回结果集
rs = ps.executeQuery();
//获得结果集的元数据:ResultSetMetaData
ResultSetMetaData rsmd = rs.getMetaData();
//通过ResultSetMetaData获取结果集中的列数;
int columnCount = rsmd.getColumnCount();
if (rs.next()){
T t = clazz.newInstance();
//处理结果集一行数据中的每一列
for (int i = 0; i <columnCount ; i++) {