众所周知,一般的项目都会有三层架构(UI,BLL,DAL),而之前写代码时都是混写,以后会慢慢分开处理(为什么呢:这样减少代码量,更便于维护数据,更直观等)。
今天在这儿封装的Java代码,属于DAL(数据访问层),怎么用呢让我们一起去看看:
第一步、找到需要封装的代码:
Java代码是很明显的,就是之前提到的七步走代码
第二步、分装代码:
在jsp文件中只用到了dao包中的代码;但当封装出来时还需要用到util包(DBHelper帮助类),entity包(实体类)。并且实体类与dao类一一对应(在以前的学习中应该有了解到,这里简介的概括一下,以例子说明):
例子(这里以用户user为例,用于login页面登陆,dologin页面是内部代码):
DBHelper帮助类(通用的):
public class DBHelper {
private static String cname="oracle.jdbc.driver.OracleDriver";
private static String user="scott";
private static String upwd="123";
private static String url="jdbc:oracle:thin:@localhost:1521:orcl";
//注册驱动类
static {
try {
Class.forName(cname);
} catch (Exception e) {
e.printStackTrace();
}
}
//连接数据库
public static Connection getCon() {
Connection con=null;
try {
con=DriverManager.getConnection(url, user,upwd);
} catch (Exception e) {
e.printStackTrace();
}
return con;
}
//关闭连接
public static void closeDB(Connection con,PreparedStatement ps,ResultSet rs) {
try {
if(con!=null) {
con.close();
}
if(ps!=null) {
ps.close();
}
if(rs!=null) {
rs.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static int getNextId(String tableName,String col) {
int id=0;
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
con=DBHelper.getCon();
ps=con.prepareStatement("select max("+col+") from "+tableName);
rs=ps.executeQuery();
if(rs.next()) {
id=rs.getInt(1)+1;
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBHelper.closeDB(con, ps, rs);
}
return id;
}
实体类:
public class User {
private int uidd;
private String uname;
private String upwd;
private String uinfo;
@Override
public String toString() {
return "User [uidd=" + uidd + ", uname=" + uname + ", upwd=" + upwd + ", uinfo=" + uinfo + "]";
}
public User() {
super();
}
public User(String uname, String upwd, String uinfo) {
super();
this.uname = uname;
this.upwd = upwd;
this.uinfo = uinfo;
}
public User(int uidd, String uname, String upwd, String uinfo) {
super();
this.uidd = uidd;
this.uname = uname;
this.upwd = upwd;
this.uinfo = uinfo;
}
public int getUidd() {
return uidd;
}
public void setUidd(int uidd) {
this.uidd = uidd;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpwd() {
return upwd;
}
public void setUpwd(S