继续添加语句
增加关闭方法
//-------------在-JDBCUtils-添加----封装方法--------------
package com.han.sorm.utils;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
- 封装了JDBC查询常用的操作
/
public class JDBCUtils {
/*
* 给sql设参数
* @param ps 预编译sql语句对象
* @param params 参数
*/
public static void handleParams(PreparedStatement ps,Object[] params){
if(params!=null){
for(int i=0;i<params.length;i++){
try {
ps.setObject(1+i, params[i]);//从1开始
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
//-----------------根据id----删除-一行代码-------------
package com.han.sorm.core;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.List;
import com.han.po.Emp;
import com.han.sorm.bean.ColumnInfo;
import com.han.sorm.bean.TableInfo;
import com.han.sorm.utils.JDBCUtils;
import com.han.sorm.utils.ReflectUtils;
/**
-
添加实现类 负责针对Mysql数据库的查询
*/
public class MySqlQuery implements Query {
public static void main(String[] args) {
Emp e = new Emp();
e.setId(2);
new MySqlQuery().delete(e);
}
public void delete(Class clazz,Object id) {
// 删除数据库某个内容;如 Emp.class,2–>delete from emp where id = 2;
// 通过Class对象找TableInfo ;类名与表名要一致
TableInfo tableInfo = TableContext.poClassTableMap.get(clazz);
// 获取主键(前面已经封装好了)
ColumnInfo onlyPriKey = tableInfo.getOnlyPriKey();
// 拼出SQL语句
String sql = " delete from " + tableInfo.getTname() + " where "
+ onlyPriKey.getName() + “=?”;
// 执行SQL语句
executeDML (sql, new Object[]{id});// Object[]是数组但现在只有一个id
}public void delete(Object obj) {
// 只传一个对象情况
Class c = obj.getClass();
// 获取表名
TableInfo tableInfo = TableContext.poClassTableMap.get©;
// 获取主键(前面已经封装好了)
ColumnInfo onlyPriKey = tableInfo.getOnlyPriKey();
// 通过反射机制,调用属性对应的get与set方法Object priKeyValue = ReflectUtils.invokeGet(onlyPriKey.getName(), obj);// 调用封装好的方法 delete (c, priKeyValue);
}
public Object executeDML(String sql, Object[] params) {
Connection conn = DBManager.getConn();
int count = 0;
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
//给sql设参数
JDBCUtils.handleParams(ps, params);
System.out.println(ps);
count = ps.executeUpdate() ;//返回 一个数
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBManager.close( ps, conn);
}
return count;
}public void insert(Object obj) {
}public Object queryInqueRow(String sql, Class clazz, Object[] params) {
return null;
}public Number queryNumber(String sql, Object[] params) {
return null;
}public List queryRows(String sql, Class clazz, Object[] params) {
return null;
}public Object queryValue(String sql, Object[] params) {
return null;
}public int update(Object obj, String[] fieldNames) {
return 0;
}
}
//---------------------------测试结果---------------------
没删除前