用apache来玩JDBC
pojo层emp对象
import java.sql.Date; public class Emp { private int empno; private String ename; private String job; private int mgr; private Date hiredate; private double sal; private double comm; private int deptno; public Emp() { super(); } public Emp(int empno, String ename, String job, int mgr, Date hiredate, double sal, double comm, int deptno) { super(); this.empno = empno; this.ename = ename; this.job = job; this.mgr = mgr; this.hiredate = hiredate; this.sal = sal; this.comm = comm; this.deptno = deptno; } public int getEmpno() { return empno; } public void setEmpno(int empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public int getMgr() { return mgr; } public void setMgr(int mgr) { this.mgr = mgr; } public Date getHiredate() { return hiredate; } public void setHiredate(Date hiredate) { this.hiredate = hiredate; } public double getSal() { return sal; } public void setSal(double sal) { this.sal = sal; } public double getComm() { return comm; } public void setComm(double comm) { this.comm = comm; } public int getDeptno() { return deptno; } public void setDeptno(int deptno) { this.deptno = deptno; } @Override public String toString() { return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job + ", mgr=" + mgr + ", hiredate=" + hiredate + ", sal=" + sal + ", comm=" + comm + ", deptno=" + deptno + "]"; } }
util层的连接数据库工具:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * 获得连接 与 释放资源 * * @author pyb * */ public class DBUtil { private static final String DERIVER = "oracle.jdbc.driver.OracleDriver"; private static final String URL = "jdbc:oracle:thin:127.0.0.1:ORCL:1521"; private static final String USERNAME = "scott"; private static final String PASSWORD = "614"; private static Connection conn = null; private DBUtil() {} static { try { Class.forName(DERIVER); conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); } catch (Exception e) { e.printStackTrace(); } } // 获取Connection对象 public static Connection getConnection() { return conn; } // 关闭的方法 public static void close(Connection c, Statement s, ResultSet r) throws SQLException { if (c != null && !c.isClosed()) { c.close(); } if (s != null && !s.isClosed()) { s.close(); } if (r != null && !r.isClosed()) { r.close(); } } }
dao层的数据操作:
import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanListHandler; import com.yibobo.pojo.Emp; import com.yibobo.util.DBUtil; public class EmpDAO { private Connection conn = DBUtil.getConnection(); private static EmpDAO empdao = new EmpDAO(); private EmpDAO(){}; //饿汉式单例 public static EmpDAO getInstance(){ return empdao; } /** * 使用apache的包来进行查询所有数据 * @return 一个集合 */ public List<Emp> queryAll(){ List<Emp> emps = new ArrayList(); QueryRunner qr = new QueryRunner(); try { emps = qr.query (conn,"SELECT * FROM emp_pyb", new BeanListHandler<>(Emp.class)); //返回集合用BeanListHandler,返回一个对象就直接用BeanHandler } catch (SQLException e) { e.printStackTrace(); } finally{ try { DBUtil.close(conn, null, null); } catch (SQLException e) { e.printStackTrace(); } } return emps; } /** * 增加一行数据 * @param e */ public void insert(Emp e){ QueryRunner qr = new QueryRunner(); try { qr.update(conn,"INSERT INTO emp_pyb VALUES(?,?,?,?,?,?,?,?)", new Object[]{e.getEmpno(),e.getEname(),e.getJob(),e.getMgr(), e.getHiredate(),e.getSal(),e.getComm(),e.getDeptno()}); } catch (SQLException e1) { e1.printStackTrace(); } } /** * 通过empno删除一行数据 * @param empno */ public void delete(int empno){ QueryRunner qr = new QueryRunner(); try { qr.update(conn,"DELETE emp_pyb WHERE empno=?",empno); } catch (SQLException e) { e.printStackTrace(); } } /** * 修改数据 通过传进来的deptno定位 * 修改为传进来的Emp * @param e * @param deptno */ public void update(Emp e,int empno){ QueryRunner qr = new QueryRunner(); String sql = "UPDATE emp_pyb SET empno=?,ename=?,job=?,mgr=?,hiredate=?,sal=?,comm=?,deptno=? WHERE empno=?"; try { qr.update(conn,sql,new Object[]{e.getEmpno(),e.getEname(),e.getJob(),e.getMgr(), e.getHiredate(),e.getSal(),e.getComm(),e.getDeptno(),empno}); } catch (SQLException e1) { e1.printStackTrace(); } } }
视图层就不贴了。确认过都能用。用这个工具是真的方便啊