本文的主要是讲述在SSH2框架下实现对oracle数据库的分页查询,删除,更新,插入的接口。注意:第一部分的代码是不用更改,直接可以添加到你工程使用的,它们是整个框架的基础,注意查看代码后的注释,有助于你的水平提高。第二部分代码则不是,用处不同,而且第二部分我写的也不好,见谅!
一。定义公共类,接口
1.数据库抽象接口类:BaseDaoInterface
2.数据库接口实现抽象类:BaseDaoInterfaceImple
3.实现分页的:1.Pager(此为一个bean,主要包含当前页,每页行数等属性,和点击下页等方法) 2.PagerService(提供对Page的操作及返回一个Page)
3.1:Pager类
3.2:PagerService 类
4.业务逻辑接口实现抽象类,此类只是在逻辑上划分了一下:BaseServiceInterface
二.应用在不同模块的接口和类:
1.CaDaoInterface
2.CaDaoImple 重点类:此类实现了上面的接口,上面的接口是继承了数据库抽象接口类,而且继承了数据库接口实现抽象类,这样它就具有了真正操作数据库的方法了,它里面的2个方法是可以不要的,是特殊要求的。你就可以调用上面的实现接口来调用操作方法。实现方法为在apllication中注入到服务接口中,下面会讲。
3.CaServicesInface接口,具体应用业务逻辑接口,继承公共的业务逻辑
4.CaServiceImple类,具体应用业务逻辑实现类,在此会注入一个CaDaoInterface,它是被实现了操作数据库的接口,调用它等于调用的CaDaoImple,CaDaoImple是真正操作数据库的类。
5.Action类:此类就是你处理提交数据,返回数据,控制跳转的
你在其中注入private CaServicesInface caServicesInface
就可以使用操作数据库的各个方法了。例子:此为一个实际使用过的,只供举例。
三。配置application,只显示相关的:
一。定义公共类,接口
1.数据库抽象接口类:BaseDaoInterface
package com.commons;
import java.util.List;
public interface BaseDaoInterface{
void addObject(Object o);
void excutesql(String sql);
void updateObject(Object o);
List getinfo( String sql);
List getinfo( String sql,String modelname);
List getRows( String sql,int pageSize, int startRow);//
List getRows( String sql,int pageSize, int startRow,String modelname);//
}
2.数据库接口实现抽象类:BaseDaoInterfaceImple
package com.commons;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class BaseDaoInterfaceImple extends HibernateDaoSupport {
private static final Log log = LogFactory.getLog(DaoInterfaceimpl.class);
//执行添加
public void addObject(Object o) {
// TODO Auto-generated method stub
this.getHibernateTemplate().save(o);
}
//执行一句sql,主要用于删除等。
public void excutesql(final String sql) {
try {
this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws SQLException, HibernateException {
try{
Query query = session.createQuery(sql);
query.executeUpdate();
session.close();
return null;
}
catch(Exception e){
session.close();
return null;
}
}
});
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
//执行更新
public void updateObject(Object o) {
this.getHibernateTemplate().update(o);
// TODO Auto-generated method stub
}
//执行sql,返回一组数据,主要用于查询
public List getinfo(final String sql) {
return getHibernateTemplate().executeFind(new HibernateCallback() {// 回调
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
try{
Query query = session.createSQLQuery(sql);
List list = query.list();
session.close();
return list;
}
catch(Exception e){
session.close();
return null;
}
}
});
}
//执行分段查询,在分页查询中使用
public List getRows(final String sql, int pageSize, int startRow)
throws HibernateException {
final int pageSize1 = pageSize;
final int startRow1 = startRow;
return getHibernateTemplate().executeFind(new HibernateCallback() {// 回调
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
try{
Query query = session.createSQLQuery(sql);
query.setFirstResult(startRow1);
query.setMaxResults(pageSize1);
List list = query.list();
session.close();
return list;
}
catch(Exception e){
session.close();
return null;
}
}
});
}
}
3.实现分页的:1.Pager(此为一个bean,主要包含当前页,每页行数等属性,和点击下页等方法) 2.PagerService(提供对Page的操作及返回一个Page)
3.1:Pager类
package com.commons;
public class Pager {
private int totalRows; // 总行数
private int pageSize = 10; // 每页显示的行数
private int currentPage; // 当前页号
private int totalPages; // 总页数
private int startRow; // 当前页在数据库中的起始行
public Pager() {
}
public Pager(int _totalRows) {
totalRows = _totalRows;
totalPages = totalRows / pageSize;
int mod = totalRows % pageSize;
if (mod > 0) {
totalPages++;
}
if (0 == totalRows) {
currentPage = 0;
startRow = 0;
}
else{
currentPage = 1;
startRow = 0;
}
}
public void first() {
if (0 == totalPages) {
currentPage = 0;
startRow = 0;
return;
}
currentPage = 1;
startRow = 0;
}
public void last() {
currentPage = totalPages;
startRow = (currentPage - 1) * pageSize;
}
public void previous() {
if (currentPage <= 1) {
startRow = 0;
return;
}
currentPage--;
startRow = (currentPage - 1) * pageSize;
}
public void next() {
if (currentPage >= totalPages) {
startRow = (totalPages - 1) * pageSize;
return;
}
currentPage++;
startRow = (currentPage - 1) * pageSize;
}
public void stay() {
startRow = (currentPage - 1) * pageSize;
}
public void refresh(int _currentPage) {
currentPage = _currentPage;
if (currentPage > totalPages) {
last();
} else if (currentPage < 0) {
first();
}else if(0 == currentPage && 1 == totalPages){
currentPage = 1;
}
}
public int getStartRow() {
return startRow;
}
public int getTotalPages() {
return totalPages;
}
public int getCurrentPage() {
return currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
public void setStartRow(int startRow) {
this.startRow = startRow;
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalRows() {
return totalRows;
}
}
3.2:PagerService 类
package com.commons;
public class PagerService {
public Pager getPager(String currentPage,String pagerMethod,int totalRows) {
// 定义pager对象,用于传到页面
Pager pager = new Pager(totalRows);
// 如果当前页号为空,表示为首次查询该页
// 如果不为空,则刷新pager对象,输入当前页号等信息
if (currentPage != null) {
pager.refresh(Integer.parseInt(currentPage));
}
// 获取当前执行的方法,首页,前一页,后一页,尾页。
if (pagerMethod != null) {
if (pagerMethod.equals("first")) {
pager.first();
} else if (pagerMethod.equals("previous")) {
pager.previous();
} else if (pagerMethod.equals("next")) {
pager.next();
} else if (pagerMethod.equals("last")) {
pager.last();
} else if (pagerMethod.equals("stay")) {
pager.stay();
}
}
return pager;
}
}
4.业务逻辑接口实现抽象类,此类只是在逻辑上划分了一下:BaseServiceInterface
public interface BaseServiceInterface{
void addObject(Object[] o,Object log);
void excutesql(String[] sql,Object log);
void updateObject(Object[] o,Object log);
void addObject(Object o,Object log);
void excutesql(String sql,Object log);
void updateObject(Object o,Object log);
void addObject(Object[] o);
void excutesql(String[] sql);
void updateObject(Object[] o);
List getinfo( String sql);
List getinfo( String sql,String modelname);
List getRows( String sql,int pageSize, int startRow);
List getRows( String sql,int pageSize, int startRow,String modelname);
}
二.应用在不同模块的接口和类:
1.CaDaoInterface
package com.CA.dao.inface;
import com.commons.BaseDaoInterface;
public interface CaDaoInterface extends BaseDaoInterface {
}
2.CaDaoImple 重点类:此类实现了上面的接口,上面的接口是继承了数据库抽象接口类,而且继承了数据库接口实现抽象类,这样它就具有了真正操作数据库的方法了,它里面的2个方法是可以不要的,是特殊要求的。你就可以调用上面的实现接口来调用操作方法。实现方法为在apllication中注入到服务接口中,下面会讲。
package com.CA.dao.imple;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import com.CA.dao.inface.CaDaoInterface;
import com.commons.BaseDaoInterfaceImple;
public class CaDaoImple extends BaseDaoInterfaceImple implements CaDaoInterface {
public List getRows(String sql, int pageSize, int startRow, String modelname) {
// TODO Auto-generated method stub
final String sql1 = sql;
final int pageSize1 = pageSize;
final int startRow1 = startRow;
final String modelname1 = modelname;
return getHibernateTemplate().executeFind(new HibernateCallback() {// 回调
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
SQLQuery query = session.createSQLQuery(sql1);
query.setFirstResult(startRow1);
query.setMaxResults(pageSize1);
List list = null;
if (modelname1.equals("TbKeyInfo")) {
//System.out.print("NND == NND");
list = query.addEntity(TbKeyInfo.class).list();
}
return list;
}
});
}
public List getinfo(String sql, String modelname) {
// TODO Auto-generated method stub
return null;
}
}
3.CaServicesInface接口,具体应用业务逻辑接口,继承公共的业务逻辑
package com.CA.service.inface;
import com.commons.BaseServiceInterface;
public interface CaServicesInface extends BaseServiceInterface {
}
4.CaServiceImple类,具体应用业务逻辑实现类,在此会注入一个CaDaoInterface,它是被实现了操作数据库的接口,调用它等于调用的CaDaoImple,CaDaoImple是真正操作数据库的类。
package com.CA.services.imple;
import java.util.List;
import com.CA.dao.inface.CaDaoInterface;
import com.CA.service.inface.CaServicesInface;
public class CaServiceImple implements CaServicesInface {
private CaDaoInterface caDaoInterface;
public CaDaoInterface getCaDaoInterface() {
return caDaoInterface;
}
public void setCaDaoInterface(CaDaoInterface caDaoInterface) {
this.caDaoInterface = caDaoInterface;
}
public void addObject(Object[] o, Object log) {
// TODO Auto-generated method stub
}
public void addObject(Object o, Object log) {
// TODO Auto-generated method stub
}
public void addObject(Object[] o) {
// TODO Auto-generated method stub
for (int i = 0; i < o.length; i++){
caDaoInterface.addObject(o[i]);
}
}
public void excutesql(String[] sql, Object log) {
// TODO Auto-generated method stub
}
public void excutesql(String sql, Object log) {
// TODO Auto-generated method stub
}
public void excutesql(String[] sql) {
// TODO Auto-generated method stub
for (int i = 0; i < sql.length; i++){
caDaoInterface.excutesql(sql[i]);
}
}
public List getRows(String sql, int pageSize, int startRow) {
// TODO Auto-generated method stub
return caDaoInterface.getRows(sql, pageSize, startRow);
}
public List getRows(String sql, int pageSize, int startRow, String modelname) {
// TODO Auto-generated method stub
return caDaoInterface.getRows(sql, pageSize, startRow, modelname);
}
public List getinfo(String sql) {
// TODO Auto-generated method stub
return caDaoInterface.getinfo(sql);
}
public List getinfo(String sql, String modelname) {
// TODO Auto-generated method stub
return null;
}
public void updateObject(Object[] o, Object log) {
// TODO Auto-generated method stub
}
public void updateObject(Object o, Object log) {
// TODO Auto-generated method stub
}
public void updateObject(Object[] o) {
// TODO Auto-generated method stub
for (int i = 0; i < o.length; i++){
caDaoInterface.updateObject(o[i]);
}
}
}
5.Action类:此类就是你处理提交数据,返回数据,控制跳转的
你在其中注入private CaServicesInface caServicesInface
就可以使用操作数据库的各个方法了。例子:此为一个实际使用过的,只供举例。
package com.CA.web.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.security.PrivateKey;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import java.util.ResourceBundle;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import com.opensymphony.xwork2.ActionContext;
import com.CA.hibernate.TbKeyInfo;
import com.CA.hibernate.TbReadedInfo;
import com.CA.hibernate.TbUseruploadInfo;
import com.CA.service.inface.CaServicesInface;
import com.commons.BaseAction;
import com.commons.Pager;
import com.commons.PagerService;
import com.commons.PublicUtil;
public class AcceptAction extends BaseAction {
private PagerService pagerService;
private CaServicesInface caServicesInface;
private Pager pager;
protected String currentPage;
protected String pagerMethod;
protected String totalRows;
private String returnResult;
private String msg;
private String url;
private String sqlText;
private ArrayList userInfo;// 显示登陆用户所有可接收的密文
private String id;//显示接收哪一个密文
private File[] inputfile1;//上传的私钥
private String encrytesturl;
private String encrydeskeyurl;
private String signeurl;
private String systemdisturl;
public String getEncrytesturl() {
return encrytesturl;
}
public void setEncrytesturl(String encrytesturl) {
this.encrytesturl = encrytesturl;
}
public String getEncrydeskeyurl() {
return encrydeskeyurl;
}
public void setEncrydeskeyurl(String encrydeskeyurl) {
this.encrydeskeyurl = encrydeskeyurl;
}
public String getSigneurl() {
return signeurl;
}
public void setSigneurl(String signeurl) {
this.signeurl = signeurl;
}
public String getSystemdisturl() {
return systemdisturl;
}
public void setSystemdisturl(String systemdisturl) {
this.systemdisturl = systemdisturl;
}
public File[] getInputfile1() {
return inputfile1;
}
public void setInputfile1(File[] inputfile1) {
this.inputfile1 = inputfile1;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public ArrayList getUserInfo() {
return userInfo;
}
public void setUserInfo(ArrayList userInfo) {
this.userInfo = userInfo;
}
public PagerService getPagerService() {
return pagerService;
}
public void setPagerService(PagerService pagerService) {
this.pagerService = pagerService;
}
public CaServicesInface getCaServicesInface() {
return caServicesInface;
}
public void setCaServicesInface(CaServicesInface caServicesInface) {
this.caServicesInface = caServicesInface;
}
public Pager getPager() {
return pager;
}
public void setPager(Pager pager) {
this.pager = pager;
}
public String getCurrentPage() {
return currentPage;
}
public void setCurrentPage(String currentPage) {
this.currentPage = currentPage;
}
public String getPagerMethod() {
return pagerMethod;
}
public void setPagerMethod(String pagerMethod) {
this.pagerMethod = pagerMethod;
}
public String getTotalRows() {
return totalRows;
}
public void setTotalRows(String totalRows) {
this.totalRows = totalRows;
}
public String getReturnResult() {
return returnResult;
}
public void setReturnResult(String returnResult) {
this.returnResult = returnResult;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getSqlText() {
return sqlText;
}
public void setSqlText(String sqlText) {
this.sqlText = sqlText;
}
// 查询出当前登陆用户的所有已经保存的文件
public String Showallfile() {
Map session = ActionContext.getContext().getSession();
String userid = session.get("userid").toString();
TbUseruploadInfo tbuseruploadinfo = null;
if (session.get("userid") != null) {
try {
sqlText = "select count(ID) FROM tb_userupload_info where RECEIVE_USER_ID='"
+ userid + "'"+" ORDER BY ID";
int totalRow = Integer.valueOf((((ArrayList) caServicesInface
.getinfo(sqlText)).get(0).toString()));
pager = pagerService.getPager(this.getCurrentPage(), this
.getPagerMethod(), totalRow);
this.setCurrentPage(String.valueOf(pager.getCurrentPage()));
this.setTotalRows(String.valueOf(totalRow));
sqlText = "select * FROM tb_userupload_info where RECEIVE_USER_ID='"
+ userid + "'";
userInfo = (ArrayList) caServicesInface.getRows(sqlText, pager
.getPageSize(), pager.getStartRow());
Iterator iter = userInfo.iterator();
ArrayList list = new ArrayList();
while (iter.hasNext()) {
Object[] row = (Object[]) iter.next();
tbuseruploadinfo = new TbUseruploadInfo();
tbuseruploadinfo.setId(String.valueOf(row[0]));
tbuseruploadinfo.setUploadUserId(String.valueOf(row[1]));
tbuseruploadinfo.setReceiveUserId(String.valueOf(row[2]));
tbuseruploadinfo.setFileOrTest(String.valueOf(row[3]));
tbuseruploadinfo.setTitle(String.valueOf(row[4]));
tbuseruploadinfo.setUploadTime(String.valueOf(row[5]));
tbuseruploadinfo.setDigitalSignatureTest(String
.valueOf(row[6]));
tbuseruploadinfo.setEncryptTest(String.valueOf(row[7]));
tbuseruploadinfo.setEncryptKey(String.valueOf(row[8]));
tbuseruploadinfo.setDigitalSignatureTestUrl(String
.valueOf(row[9]));
tbuseruploadinfo.setEncryptTestUrl(String.valueOf(row[10]));
tbuseruploadinfo.setEncryptKeyUrl(String.valueOf(row[11]));
list.add(tbuseruploadinfo);
}
userInfo = list;
returnResult = "browseallacceptfile";
} catch (Exception e) {
e.printStackTrace();
msg = "AcceptAction!Showallfile"
+ ResourceBundle.getBundle("resource").getString(
"databaseerror");
this.setUrl("AcceptAction!Showallfile.action?currentPage=1&pagerMethod=first");
returnResult = "fail";
}
} else {
msg = ResourceBundle.getBundle("resource").getString("timeout");
url = ResourceBundle.getBundle("resource").getString("timeouturl");
returnResult = "timeout";
}
return returnResult;
}
//接受文件
public String acceptfile(){
Map session = ActionContext.getContext().getSession();
if (session.get("userid") != null) {
try {
returnResult = "acceptsuccess";
} catch (Exception e) {
e.printStackTrace();
msg = "AcceptAction!acceptfile"
+ ResourceBundle.getBundle("resource").getString(
"databaseerror");
this.setUrl("AcceptAction!Showallfile.action?currentPage=1&pagerMethod=first");
returnResult = "fail";
}
} else {
msg = ResourceBundle.getBundle("resource").getString("timeout");
url = ResourceBundle.getBundle("resource").getString("timeouturl");
returnResult = "timeout";
}
return returnResult;
}
//验证填写的接收回执
public String uploadmessage(){
Map session = ActionContext.getContext().getSession();
String userid=session.get("userid").toString();
ArrayList userInfo = null;
ArrayList UserInfo;
Iterator iter;
TbKeyInfo tbkeyinfo=new TbKeyInfo();
TbUseruploadInfo tbuseruploadinfo = new TbUseruploadInfo();
PublicUtil p=new PublicUtil();
BASE64Encoder enc = new BASE64Encoder();
BASE64Decoder dec = new BASE64Decoder();
if (session.get("userid") != null) {
try {
//读取到私钥
ObjectInputStream in=new ObjectInputStream(new FileInputStream(inputfile1[0]));
PrivateKey myprikey=(PrivateKey)in.readObject();
byte[] prikey=myprikey.getEncoded();
String prikey1=enc.encodeBuffer(prikey);
//查询到私钥
sqlText = "select * from TB_KEY_INFO where ID_NUM='" +userid
+ "'";
userInfo = (ArrayList) caServicesInface.getinfo(sqlText);
iter = userInfo.iterator();
ArrayList list = new ArrayList();
while (iter.hasNext()) {
Object[] row1 = (Object[]) iter.next();
tbkeyinfo.setIdNum(String.valueOf(row1[0]));
tbkeyinfo.setPublicKey(String.valueOf(row1[1]));
tbkeyinfo.setPrivateKey(String.valueOf(row1[2]));
list.add(tbkeyinfo);
}
userInfo = list;
String prikey2=tbkeyinfo.getPrivateKey();
//查询到接收文件的地址以供用户下载
sqlText = "select * FROM tb_userupload_info where ID='"
+ id + "'";
UserInfo = (ArrayList) caServicesInface.getinfo(sqlText);
iter = UserInfo.iterator();
while (iter.hasNext()) {
Object[] row = (Object[]) iter.next();
tbuseruploadinfo.setId(String.valueOf(row[0]));
tbuseruploadinfo.setUploadUserId(String.valueOf(row[1]));
tbuseruploadinfo.setReceiveUserId(String.valueOf(row[2]));
tbuseruploadinfo.setFileOrTest(String.valueOf(row[3]));
tbuseruploadinfo.setTitle(String.valueOf(row[4]));
tbuseruploadinfo.setUploadTime(String.valueOf(row[5]));
tbuseruploadinfo.setDigitalSignatureTest(String
.valueOf(row[6]));
tbuseruploadinfo.setEncryptTest(String.valueOf(row[7]));
tbuseruploadinfo.setEncryptKey(String.valueOf(row[8]));
tbuseruploadinfo.setDigitalSignatureTestUrl(String
.valueOf(row[9]));
tbuseruploadinfo.setEncryptTestUrl(String.valueOf(row[10]));
tbuseruploadinfo.setEncryptKeyUrl(String.valueOf(row[11]));
tbuseruploadinfo.setRedeadyReceiveUserId(String.valueOf(row[12]));
}
//得到各个连接地址
String filePath =
ResourceBundle.getBundle("resource").getString(
"upload");
systemdisturl=filePath+tbuseruploadinfo.getDigitalSignatureTest();
prikey1=prikey1.replaceAll("\r\n", "");
prikey2=prikey2.replaceAll("\r\n", "");
// System.out.println(prikey1);
// System.out.println(prikey2);
// System.out.println(prikey1.length());
// System.out.println(prikey2.length());
if(prikey1.equals(prikey2)){
//填写已读回执,写入数据库
sqlText = "select max(ID)+1 as id FROM tb_readed_info ";
// 计算保存信息的最大ID号
String a;
try {
a = ((ArrayList) caServicesInface
.getinfo(sqlText)).get(0).toString();
} catch (Exception e) {
a = "1";
}
String time=p.getNowtime();
TbReadedInfo t=new TbReadedInfo();
t.setId(a);
t.setUploadUserId(tbuseruploadinfo.getUploadUserId());
t.setReceiveUserId(userid);
t.setTitle(tbuseruploadinfo.getTitle());
t.setReadedTime(time);
t.setIsvalid(id);
Object obj[] = {t};
caServicesInface.addObject(obj);
returnResult = "accepttrue";
}else{
returnResult = "acceptfalse";
}
} catch (Exception e) {
e.printStackTrace();
msg = "AcceptAction!uploadmessage"
+ ResourceBundle.getBundle("resource").getString(
"databaseerror");
this.setUrl("AcceptAction!Showallfile.action?currentPage=1&pagerMethod=first");
returnResult = "fail";
}
} else {
msg = ResourceBundle.getBundle("resource").getString("timeout");
url = ResourceBundle.getBundle("resource").getString("timeouturl");
returnResult = "timeout";
}
return returnResult;
}
}
三。配置application,只显示相关的:
<!-- 定义session工厂 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 依赖注入数据源,注入正是上文定义的dataSource -->
<property name="dataSource">
<ref bean="dataSource" />
</property>
<!-- 定义hibernate的SessionFactor的属性 -->
<property name="hibernateProperties">
<props>
<!-- 定义使用数据的SQL方言-->
<!-- Derby数据库 -->
<!--
<prop key="hibernate.dialect">
org.hibernate.dialect.DerbyDialect
</prop>
-->
<!-- Oracle9 i数据库 -->
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
<!-- 定义显示调试的SQL语句 -->
<prop key="hibernate.show_sql ">true</prop>
</props>
</property>
<!-- 定义加载Hibernate持久化对象实体映射文件 -->
<property name="mappingResources">
<list>
<value></value>
</list>
</property>
</bean>
<!-- 定义事务管理器,使适用于Hiberante的事务管理器-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<!-- 为事务管理器注入sessionFactory -->
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- 配置业务逻辑 -->
<bean id="pagerService" class="com.sunnysky.commons.PagerService"></bean>
<bean id="caDaoInterface"
class="com.sunnysky.CA.dao.imple.CaDaoImple">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="caServicesInface"
class="com.sunnysky.CA.services.imple.CaServiceImple">
<property name="caDaoInterface">
<ref bean="caDaoInterface" />
</property>
</bean>
<bean id="EncryptAction"
class="com.sunnysky.CA.web.action.EncryptAction" scope="request">
<property name="caServicesInface">
<ref bean="caServicesInface" />
</property>
<property name="pagerService">
<ref bean="pagerService" />
</property>
</bean>