您的位置:首页 > 其它

封装jdbc的crud操作

2017-09-25 20:13 330 查看
//封装crud操作
public class BaseDao {
private final static String driver = "oracle.jdbc.driver.OracleDriver";
private final static String url = "jdbc:oracle:thin:localhost:1521:orcl";
private final static String name = "scott";
private final static String pwd = "123456";

public Connection getConn() {
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, name, pwd);
if (conn == null) {
System.out.println("**********8conn is null");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("出错了,数据库没有连上");
}
return conn;
}

// 增加,修改,删除
public int executeUpdate(String sql, Object[] objParam) throws Exception {
int r = 0;
Connection conn = this.getConn();
PreparedStatement ps = conn.prepareStatement(sql);
if (objParam != null)// 判断参数是否为空
{// 对参数进行遍历,并设置sql语句参数值
for (int i = 0; i < objParam.length; i++) {
ps.setObject((i + 1), objParam[i]);
}
}
r = ps.executeUpdate();
ps.close();
conn.close();
return r;

}

// 封装jdbc查询方法,返回结果集
public ResultSet executeQuery(String sql, Object[] objParam)
throws Exception {
Connection conn = this.getConn();
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = null;
if (objParam != null) {
for (int i = 0; i < objParam.length; i++) {
ps.setObject((i + 1), objParam[i]);
}
}
rs = ps.executeQuery();
return rs;

}

// 封装jdbc查询方法,返回结果集,利用反射获取记录封装对象添加集合
public List<Object> executeQuery2(String sql, Object[] objParam,
String className) throws Exception {
List<Object> list = new ArrayList<Object>();// 创建一个list集合
Connection conn = this.getConn();
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = null;
if (objParam != null) {// 参数数组不为空,则遍历
for (int i = 0; i < objParam.length; i++) {
ps.setObject((i + 1), objParam[i]);
}
}
rs = ps.executeQuery();// 执行查询返回结果
Class<?> cl = Class.forName(className);
Field[] fie = cl.getDeclaredFields();// 得到javabean的属性
while (rs.next()) {// 对rs结果集进行判断
Object obj = cl.newInstance();// 创建一个对象
for (Field f : fie) {// 对属性数组进行遍历
String name = f.getName();// 获得属性名字
Object val = rs.getObject(name);// 根据名字得到表里的记录
f.setAccessible(true);// 设置可访问
f.set(obj, val);// 字段设置值
}
list.add(obj);// 遍历完一条记录添加一个集合
}

return list;

}
}


测试:

public class EmpDao extends BaseDao {
public static void main(String[] args) throws SQLException {
EmpDao ed = new EmpDao();
List<Emp> list = ed.getEmpList3();
for (Emp e : list) {
System.out.println(e.getEmpno() + "\t" + e.getEname() + "\t"
+ e.getJob() + "\t" + e.getDept().getDno() + "\t"
+ e.getDept().getDname() + "\t" + e.getDept().getLoc());
}
}

private List<Emp> getEmpList3() throws SQLException {
// TODO Auto-generated method stub
List<Emp> list = new ArrayList<Emp>();// 创建list集合
Connection conn = super.getConn();
// 创建一个表关联查询语句
String sql = "select empno,ename,job,b.deptno,b.dname from emp a,dept b where a.deptno=b.deptno";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();// 执行查询
while (rs.next()) {
Emp emp = new Emp();// 创建对象
// 设置属性为对结果接进行遍历从列名得到的对象
emp.setEmpno(rs.getString("empno"));
emp.setEname(rs.getString("ename"));
emp.setJob(rs.getString("job"));
// 关联查询得到两张表的记录
Dept d = new Dept();
d.setDno(rs.getString("deptno"));
d.setDname(rs.getString("dname"));
emp.setDept(d);// 在emp对象里添加dept对象
list.add(emp);// 添加emp对象
}
return list;
}

// 添加记录
public void addDept() throws Exception {
String sql = "inset inot dept(deprno,dname,loc) values(?,?,?)";
Object[] val = { "79", "开发部", "洛阳" };
int r = super.executeUpdate(sql, val);
if (r == 1) {
System.out.println("添加记录成功");
}
}

// 删除记录
public void deleteDept() throws Exception {
String sql = "delete from dept where deptno=?";
Object obj[] = { "79" };
int r = super.executeUpdate(sql, obj);
if (r == 1) {
System.out.println("添加记录成功");
}
}

// 更新记录
public void updateDept() throws Exception {
String sql = "update dept set dname=? where deptno=?";
int r = super.executeUpdate(sql, null);
if (r == 1) {
System.out.println("添加记录成功");
}

}

public List<Emp> getEmpList2() throws Exception {
List<Emp> list = new ArrayList<Emp>();
String sql = "select empno,ename,job,b.deptno,b.name from emp a,dept b where a.deptno=b.deptno";
ResultSet rs = super.executeQuery(sql, null);
while (rs.next()) {
Emp emp = new Emp();
emp.setEmpno(rs.getString("empno"));
emp.setEname(rs.getString("name"));
emp.setJob(rs.getString("job"));
Dept d = new Dept();
d.setDno(rs.getString("deptno"));
d.setDname(rs.getString("dname"));
emp.setDept(d);
list.add(emp);
}
rs.close();
return list;

}

// 利用反射执行查询,封装rs结果,添加进集合
public List<Emp> getEmpList() throws Exception {
List list = new ArrayList();
String sql = "select empno,ename,job from emp";
list = super.executeQuery2(sql, null, "transaction.entity.Emp");
for (Object o : list) {
Emp e = (Emp) o;
System.out.println(e.getEmpno() + " " + e.getEname());
}
return list;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: