package JDBCTemplate;
import org.junit.Test;
import utils.JDBCUtils;
import javax.sql.DataSource;
/**
* 模拟Dao层
*/
public class JDBCTemplateTest {
// 括号里要传递什么参数
private JDBCTemplate template = new JDBCTemplate();
@Test
public void insert(){
String sql = "INSERT INTO student VALUES(?,?,?,?)";
Object[] params = {5,"周琦",27,"1997-02-20"};
int result = template.update(sql, params);
if (result != 0){
System.out.println("添加成功");
}else {
System.out.println("添加失败");
}
}
}
package JDBCTemplate;
import utils.JDBCUtils;
import javax.sql.DataSource;
import java.sql.*;
/**
* JDBC框架类
*/
public class JDBCTemplate {
// 1.定义参数变量(数据源、连接对象、执行者对象、结果集对象)
private DataSource dataSource;
private Connection con;
private PreparedStatement pst;
private ResultSet rs;
// 2.通过有参构造为数据源赋值
public JDBCTemplate(DataSource dataSource) {
this.dataSource = dataSource;
}
// 3.定义update方法。参数:sql语句,Object类型的可变参数
public int update(String sql, Object... objs) {
// 4.定义int类型变量,用于接收增删改查后影响的行数
int result = 0;
try {
// 5.通过数据源获取一个数据库连接
con = dataSource.getConnection();
// 6.通过数据库连接对象获取执行者对象,并对sql语句进行预编译
pst = con.prepareStatement(sql);
// 7.通过执行者对象获取参数的原信息对象
ParameterMetaData parameterMetaData = pst.getParameterMetaData();
// 8.通过参数源信息对象获取参数的个数
int count = parameterMetaData.getParameterCount();
// 9.帕努单参数数量是否一致
if (count != objs.length) {
throw new RuntimeException("参数个数不匹配");
}
// 10.为sql语句占位符赋值
for (int i = 0; i < objs.length; i++) {
pst.setObject(i + 1, objs[i]);
}
// 11.执行sql语句并接受结果
result = pst.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 12.释放资源
JDBCUtils.close(con, pst);
}
// 13.返回结果
return result;
}
}
这里要传递什么参数
视频里的参数我写不出来
求大神指点,谢谢
有回答 必采纳点赞