前情提要:配置驱动, 这里我已经配置好了封装在JDBCUtils.java中,还不会配置连接数据库的小伙伴可以参考这篇博客,没有多余全是干货拒绝白嫖!!!
Java——JDBC连接数据库(步骤详解!!!)_张起灵-小哥的博客-CSDN博客_jdbc连接数据库步骤java
通用增删改操作方法:
public static void update(String sql,Object ... args){
Connection conn = null;
PreparedStatement ps = null;
try {
//1.获取数据库的连接
conn = JDBCUtils.getConnection();
//2.获取PreparedStatement的实例 (或:预编译sql语句)
ps = conn.prepareStatement(sql);
//3.填充占位符
for(int i = 0;i < args.length;i++){
ps.setObject(i + 1, args[i]);
}
//4.执行sql语句
ps.execute();
} catch (Exception e) {
e.printStackTrace();
}finally{
//5.关闭资源
JDBCUtils.closeResource(conn, ps);
}
来实验一下:
test中有一张employee表
//增加一条记录
String sql="insert into employee values(6,'哈士奇')";
update(sql);
//将增加的name改成田园
String usql="update employee set name='田园' where name='哈士奇'";
update(usql);
//删除名字为橘猫的记录
String dsql="delete from employee where name='橘猫'";
update(dsql);
在数据库中查看更改后的数据表:
通用查询操作方法:
public static <T> T getInstance(Class<T> clazz, String sql, Object... args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 1.获取数据库连接
conn = JDBCUtils.getConnection();
// 2.预编译sql语句,得到PreparedStatement对象
ps = conn.prepareStatement(sql);
// 3.填充占位符
for (int i = 0; i < args.length; i++) {
ps.setObject(i + 1, args[i]);
}
// 4.执行executeQuery(),得到结果集:ResultSet
rs = ps.executeQuery();
// 5.得到结果集的元数据:ResultSetMetaData
ResultSetMetaData rsmd = rs.getMetaData();
// 6.1通过ResultSetMetaData得到columnCount,columnLabel;通过ResultSet得到列值
int columnCount = rsmd.getColumnCount();
if (rs.next()) {
T t = clazz.newInstance();
for (int i = 0; i < columnCount; i++) {// 遍历每一个列
// 获取列值
Object columnVal = rs.getObject(i + 1);
// 获取列的别名:列的别名,使用类的属性名充当
String columnLabel = rsmd.getColumnLabel(i + 1);
// 6.2使用反射,给对象的相应属性赋值
Field field = clazz.getDeclaredField(columnLabel);
field.setAccessible(true);
field.set(t, columnVal);
}
return t;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 7.关闭资源
JDBCUtils.closeResource(conn, ps,rs);
}
return null;
}
实验一下,这里采取ORM思想来输出查询结果:
//查询id=1的记录
String sql="select *from employee where id=1";
//ORM思想,即一张表对应一个java类,一个记录对应一个对象,一个列对应一个属性
Employee instance = getInstance(Employee.class, sql);
System.out.println(instance);
查看结果: