JAVABEAN的封装--回调技术
来源:互联网 发布:淘宝视频服务不能订购 编辑:程序博客网 时间:2024/06/07 00:10
大家都知道,J2EE设计编码时,少不了数据库的操作,而且数据库中的数据要封装成JAVABEAN更是少不了的,下面我介绍一种使用动态继承的方法封装JAVABEAN,也就是回调技术,先看下面的代码:
package jk.util;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBUtils {
private static DataSource dataSource;
static{
try {
Context context =new InitialContext();
dataSource = (DataSource)context.lookup("mytestdb");//使用数据源
} catch (NamingException e) {
e.printStackTrace();
}
}
private Connection con ;
public DBUtils() {
if(dataSource!=null){
try {
con = dataSource.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return;
}
}
public void excuteSql(String sql) throws SQLException{//无返回值,执行数据库操作
Statement st =null;
try {
st = con.createStatement();
st.execute(sql);
} catch (SQLException e) {
throw e;
}finally{
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public void excuteSqlWithResult(String select) throws SQLException{//需要封装JAVABEAN的操作
Statement st =null;
ResultSet rst =null;
try {
st = con.createStatement();
rst = st.executeQuery(select);
mapResultSet(rst);//需要动态继承的方法,目的是在关闭结果集之前使用结果集
} catch (SQLException e) {
throw e;
}finally{
if(rst!=null){
rst.close();
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public void mapResultSet(ResultSet rst) throws SQLException{//需要动态继承的方法
}
public void free(){
if(con!=null){
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* @param args
*/
}
上面的类是要获得数据库连接并执行数据库操作,下面封装JAVABEAN
ackage jk.model.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import jk.model.vo.Userinfo;
import jk.util.DBUtils;
public class Userdao {
public List<Userinfo> getalluser()
{
final List<Userinfo> userlist=new ArrayList<Userinfo>();
DBUtils db=new DBUtils(){
@Override
public void mapResultSet(ResultSet rst) throws SQLException {//动态继承,覆盖父类的方法
// TODO Auto-generated method stub
Userinfo user=new Userinfo();
user.setUuid(rst.getInt(1));
user.setUsername(rst.getString(2));
user.setPassword(rst.getString(3));
userlist.add(user);
}
};
try {
db.excuteSqlWithResult("select * from User_info");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return userlist;
}
}
以上的代码,大家看了之后,可能感觉到在DAO包中封装已经是很方便了,其原理就是覆盖掉父类中的方法,但程序执行到此方法是会走子类方法
- JAVABEAN的封装--回调技术
- 利用javabean技术封装对象
- JavaBean技术的一些讲解
- javabean的内省技术详解
- SAX对xml的解析,javabean封装
- 几种封装javaBean的方法
- javabean技术
- JavaBean技术
- JavaBean技术
- JavaBean技术
- JavaBean技术
- JavaBean技术
- javabean技术
- JavaWeb体系结构的理解-4.JavaBean技术
- 完美的“咖啡豆”——JavaBean技术
- javabean以及内省技术的详解
- jsp技术:day3#1---JavaBean的使用
- 【JavaEE】JavaBean技术--一个简单的例子
- [PR]实力才是职场获胜的关键因素
- 不同身份如何使用Trufun Kant Studio?
- 为何我不能发表贴子
- 一些摘抄!
- MSXML使用技巧:用指定的SCHEMA检验XML
- JAVABEAN的封装--回调技术
- 20种人不配当大学生
- 新经济模式下如何以开发软件谋生
- HtmlSelect控件
- 做网站的一些定律
- 关于CDN的
- HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth到底指的哪到哪的距离之完全详解
- jBPM开发企业流程应用之在Tomcat上部署流程引擎及控制台
- 汇编寄存器和寻址方式简介