封装jdbc
对jdbc的封装主要是对实体对象进行封装,封装后只需传入实体对象或实体对象类等即可对其进行简单操作。
目的是:减少代码重复,提高代码重用。首先在WEB-INF文件夹导入jar包,要对应自己的版本号,再加载这个包。
之后新建几个包分别
存储不同类型的类。以下代码仅对新手有用,老鸟略过。代码如下:
工具包:
代码块语法遵循标准markdown代码,例如:
package com.bdqn.utils;
public class Connaiti {
public static final String use="root";
public static final String pwd="root";
public static final String driver="com.mysql.jdbc.Driver";
public static final String url="jdbc:mysql://localhost:3306/dept";
自己的数据库
}
实体包:
package com.bdqn.entity;
//插入get、set、有参无参、toString的方法
public class Dept {
private int did;
private String dname;
private String dpwd;
private String dmesc;
public int getDid() {
return did;
}
public void setDid(int did) {
this.did = did;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getDpwd() {
return dpwd;
}
public void setDpwd(String dpwd) {
this.dpwd = dpwd;
}
public String getDmesc() {
return dmesc;
}
public void setDmesc(String dmesc) {
this.dmesc = dmesc;
}
public Dept() {
}
public Dept(int did, String dname, String dpwd, String dmesc) {
this.did = did;
this.dname = dname;
this.dpwd = dpwd;
this.dmesc = dmesc;
}
@Override
public String toString() {
return "Dept [did=" + did + ", dname=" + dname + ", dpwd=" + dpwd
+ ", dmesc=" + dmesc + "]";
}
实体类下的Text类(最后再写):
package com.bdqn.entity;
import com.bdqn.dao.BaseDao;
import com.bdqn.dao.DestDao;
import com.bdqn.dao.impl.DeptImpl;
public class Text {
public static void main(String[] args) {
DeptImpl dao =new DeptImpl(); //可以父类调用子类
Dept dept =new Dept();
dept.setDname("fujiajun2");
dept.setDid(2);
int num =dao.updateDept(dept);
System.out.println(num);
}
}
DAO包,数据访问接口:
package com.bdqn.dao;
import java.util.List;
import com.bdqn.entity.Dept;
//实现类
public interface DestDao {
//增加
int insertDept(Dept dept);
//修改
int updateDept(Dept dept);
//删除
int deleteDept(int did);
//全查
List<Dept> selectAllDept();
//根据id查询
List<Dept> selectDept(int did);
}
提供从数据库增、删、改、查等的操作
package com.bdqn.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.bdqn.utils.Connaiti;
public class BaseDao {
private static Connection contion =null;
private static PreparedStatement ps=null;
//获取连接
public static Connection getConnection() {
//加载驱动
try {
Class.forName(Connaiti.driver);
contion=DriverManager.getConnection(Connaiti.url, Connaiti.use, Connaiti.pwd);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return contion;
}
//关闭资源
public static void close(Connection contion,Statement st,ResultSet rs){
try {
if (rs!=null) {
rs.close();
}
if (st!=null) {
st.close();
}
if (contion!=null) {
contion.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//实现增删改
public static int update(String sql,Object[] objects){
int num =0;
contion=getConnection();
try {
ps=contion.prepareStatement(sql);
if (objects !=null && objects.length>0) {
for (int i = 0; i < objects.length; i++) {
ps.setObject((i+1), objects[i]);
}
}
num=ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
close(contion, ps, null);
}
return num;
}
//查询
public static ResultSet getResultSet(String sql,Object[] objects) {
ps=null;
ResultSet rs=null;
try {
contion= getConnection();
ps=contion.prepareStatement(sql);
if (objects!=null &&objects.length>0) {
for (int i = 0; i < objects.length; i++) {
ps.setObject((i+1), objects[i]);
}
}
rs=ps.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
close(contion, ps, rs);
}
return rs;
}
}
DAO的实现包:
package com.bdqn.dao.impl;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.bdqn.dao.BaseDao;
import com.bdqn.dao.DestDao;
import com.bdqn.entity.Dept;
public class DeptImpl extends BaseDao implements DestDao{
@Override //插入、增加
public int insertDept(Dept dept) {
String sql="insert into dept1 valuse(?,?,?,?)";
Object[] objects ={dept.getDid(),dept.getDname(),dept.getDpwd(),dept.getDmesc()};
int num =this.update(sql, objects);
return num;
}
@Override //修改
public int updateDept(Dept dept) {
String sql="update dept1 set dname=? where did=?";
Object[] objects={dept.getDname(),dept.getDid()};
int num =this.update(sql, objects);
return num;
}
@Override //删除
public int deleteDept(int did) {
String sql ="delete from dept1 where did=?";
Object[] objects={did};
int num =this.update(sql, objects);
return num;
}
@Override //查询所有
public List<Dept> selectAllDept() {
String sql="select *from dept1";
List<Dept> list=null;
try {
ResultSet rs=this.getResultSet(sql, null);
list =new ArrayList<Dept>();
while (rs.next()) {
Dept dept =new Dept();
int did=rs.getInt("did");
String dname=rs.getString("dname");
String dpwd=rs.getString("dpwd");
String dmesc=rs.getString("dmesc");
dept.setDid(did);
dept.setDname(dname);
dept.setDpwd(dpwd);
dept.setDmesc(dmesc);
list.add(dept);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
@Override //根据id查询
public List<Dept> selectDept(int did) {
String sql="select *from dept where did=?";
Object[] objects=null;
List<Dept> list=null;
try {
ResultSet rs=this.getResultSet(sql, objects);
list =new ArrayList<Dept>();
while (rs.next()) {
Dept dept =new Dept();
int did1=rs.getInt("did");
String dname=rs.getString("dname");
String dpwd=rs.getString("dpwd");
String dmesc=rs.getString("dmesc");
dept.setDid(did);
dept.setDname(dname);
dept.setDpwd(dpwd);
dept.setDmesc(dmesc);
list.add(dept);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
}