仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 919|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网站制作之将数据库操纵封装到Javabean

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:39:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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的话,那么微软还剩的手段就是开源了,呵呵。
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-21 12:19:23 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
蒙在股里 该用户已被删除
板凳
发表于 2015-1-28 14:39:25 来自手机 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
透明 该用户已被删除
地板
 楼主| 发表于 2015-2-2 22:07:17 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
金色的骷髅 该用户已被删除
5#
发表于 2015-2-3 12:28:40 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
小女巫 该用户已被删除
6#
发表于 2015-2-8 23:33:47 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
山那边是海 该用户已被删除
7#
发表于 2015-2-23 10:12:20 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
简单生活 该用户已被删除
8#
发表于 2015-3-7 07:28:01 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
兰色精灵 该用户已被删除
9#
发表于 2015-3-8 00:47:18 | 只看该作者
是一种使用者不需花费很多时间学习的语言
深爱那片海 该用户已被删除
10#
发表于 2015-3-10 07:00:34 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
爱飞 该用户已被删除
11#
发表于 2015-3-17 00:07:52 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
柔情似水 该用户已被删除
12#
发表于 2015-3-19 19:42:34 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
只想知道 该用户已被删除
13#
发表于 2015-3-20 18:27:17 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
变相怪杰 该用户已被删除
14#
发表于 2015-3-23 20:14:34 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
第二个灵魂 该用户已被删除
15#
发表于 2015-3-25 17:58:21 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
谁可相欹 该用户已被删除
16#
发表于 2015-3-31 08:31:51 | 只看该作者
是一种使用者不需花费很多时间学习的语言
小魔女 该用户已被删除
17#
发表于 2015-4-9 04:10:14 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
乐观 该用户已被删除
18#
发表于 2015-4-10 05:38:36 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
若天明 该用户已被删除
19#
发表于 2015-4-12 15:08:31 | 只看该作者
是一种为 Internet发展的计算机语言
再现理想 该用户已被删除
20#
发表于 2015-4-13 23:17:54 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 21:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表