|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
到时我们不用学struts,不用学spring,不用学Hibernate,只要能把jsf学会了,完全可以替代所有的框架,包括AJAX,都知道AJAX并不是新技术,虽说我没深入学习jsf但我认为jsf应该已经能通过其它技术替代AJAX,实现无缝刷新。封装|数据|数据库封装数据库操纵,目标就是为了埋没java.sql包内的类,在编码中往失落中心的数据库操纵代码。以根绝间接数据库操纵简单带来的资本未开释成绩。同时也削减了数据库操纵的编码量。
可是良多网友在封装时,却喜好前往了局集(ResultSet对象),那末这个封装就没成心义了。
1.又是间接操纵中心数据库类,跟封装前几近没甚么变更。
2.了局集老是依附于它利用的毗连(Connection)对象。因而当毗连对象在办法内被封闭后,你前往的ResultSet就没有效了。
假如真的要取得查询数据库的了局集,就把了局集对象内的一切数据,转储到以Map为元素的List对象内。
固然,这类体例,不克不及顺应年夜数据量的查询,不外假如真的碰着年夜数据量的查询,那用甚么封装都欠好,仍是得间接数据库操纵.:)))
上面是复杂的数据库操纵Javabean的代码
DbWrapper.java
importjava.sql.*;
importjava.util.*;
publicclassDbWrapper
{
//界说毗连池对象为静态变量,将一向存在,直到事情目次封闭。
privatestaticDataSourceds=null;
//1.用毗连池的体例取得毗连
//假如不是做多半据库程序,保举利用此办法
//相干内容:在tomcat办理界面设置毗连池
publicstaticConnectionopenConnection()throwsException
{
//只必要初始化1次
if(ds==null)
{
ContextinitContext=newInitialContext();
ContextenvContext=(Context)initContext.lookup("java:/comp/env");
DataSourceds=(DataSource)envContext.lookup("jdbc/MyDataSource");
}
returnds.getConnection();
}
//2.用jdbc驱动取得毗连
//相干内容:JSP数据库毗连年夜全
publicstaticConnectionopenConnection(
Stringdriver,
Stringurl,
Stringusername,
Stringpassword)
throwsException
{
Class.forName(driver).newInstance();
returnDriverManager.getConnection(url,username,password);
}
publicstaticvoidcloseConnection(Connectionconn)throwsException
{
if(conn!=null)
{
conn.close();
}
}
publicstaticintexecuteUpdate(Stringsql)throwsException
{
intcount=0;
Connectionconn=null;
Statementstmt=null;
try
{
conn=openConnection();
stmt=conn.createStatement();
count=stmt.executeUpdate(sql);
}
catch(Exceptione)
{
throwe;
}
finally
{
closeConnection(conn);
}
returncount;
}
publicstaticListexecuteQuery(Stringsql)throwsException
{
Listlist=newArrayList();
Connectionconn=null;
Statementstmt=null;
ResultSetrs=null;
try
{
conn=openConnection();
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
ResultSetMetaDatarsmd=rs.getMetaData();
while(rs.next())
{
Mapmap=newHashMap();
for(inti=1;i<=rsmd.getColumnCount();i++)
{
map.put(rsmd.getColumnName(i),rs.getObject(i));
}
list.add(map);
}}
catch(Exceptione)
{
e.printStackTrace();
}
finally
{
if(rs!=null)rs.close();
closeConnection(conn);
}
returnlist;}
}
利用示例:
//1.关于insert,update,delete语句intcount=DbWrapper.executeUpdate(sql);
//2.关于selete语句
java.util.Listlist=DbWrapper.executeQuery(sql);
//办法一:按名字取值,注重巨细写是严厉辨别的
for(inti=0;i<list.size();i++)
{
java.util.Mapmap=(java.util.Map)list.get(i);
out.println(mag.get("column_name").toString());
}
//办法二:遍历取值
for(inti=0;i<list.size();i++)
{
java.util.Mapmap=(java.util.Map)list.get(i);
for(java.util.Iteratorit=map.keySet().iterator();it.hasNext();)
{
Stringcolumn_name=it.next().toString());//取值时注重null判别
out.println(column_name+"="+map.get(column_name)==null?"":map.get(column_name).toString());
}
}
进而能拉拢大多数程序员用windows产品。并且从ASP.NETAJAX可以跨平台这一点上,间接证明了我们的推断,至少证明了微软做过这方面的研究。所以如果哪一天突然听说了.net可以跨平台了,那么请不要吃惊,如果这一天真的到来,java就到了真正和.net决战的时刻。因为不到万不得以的时候微软是不会推出跨平台的.net的,如果跨平台的.net还不足以对抗java的话,那么微软还剩的手段就是开源了,呵呵。 |
|