- 浏览: 2828733 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (1173)
- 名言警句 (5)
- 心情随笔 (50)
- 数据库 (57)
- Java基础 (241)
- J2EE框架 (91)
- 数据结构 (12)
- 程序设计 (21)
- WEB技术 (128)
- 网络日志 (12)
- IT资讯 (247)
- linux (64)
- solaris (2)
- 其它 (143)
- WebService (4)
- 日语学习 (2)
- 机器人 (5)
- Android (5)
- cgywin (3)
- Game (1)
- DWR (1)
- spring (8)
- canvas (1)
- Guava (3)
- Modbus (5)
- 测试 (6)
- mongodb (9)
- Quartz (2)
- Cron (1)
- windows (2)
- 持续集成 (1)
- bootstrap (3)
- 结对编程 (1)
- nodejs (1)
- Netty (1)
- 安全 (3)
- webstorm (2)
- sparkline (1)
- Job (1)
- git (3)
- Maven (3)
- knockout (5)
- jquery (1)
- bower (1)
- docker (1)
- confluence (4)
- wiki (1)
- GoogleMap (1)
- jekyll (10)
- ruby (2)
- npm (3)
- browserify (1)
- gulp (3)
- openwrt (1)
- discuz (3)
- 输入法 (1)
- JPA (1)
- eclipse (2)
- IntelliJ (1)
- css (1)
- 虚拟机 (1)
- 操作系统 (1)
- azkaban (2)
- scrum (1)
最新评论
-
pangxiea_:
你好, 想请问一下 Linux下 这么使用rxtxcomm 在 ...
使用Java进行串口通信 -
abababudei:
请教一下,这个您是怎么解决的:/dev/ttyS2enteri ...
Java应用程序的MODBUS通讯 -
xuniverse:
hannibal005 写道楼主,我问下 request.se ...
用javascript与java进行RSA加密与解密 -
atxkm:
找了一下午,终于找到了
gulp 拷贝文件时如何移除文件目录结构 -
kalogen:
gtczr 写道非常感谢,经过我自己的修改,已经完美实现。发出 ...
用javascript与java进行RSA加密与解密
这两个星期以来,我把原来用struts开发的一个测试工具改用struts+hibernate来实现,首先从心情上来,整个开发过程中始终保持愉快和平和,“原来开发可以这样愉快?”,再一点就是开发效率上高效了许多。
现在sun又加入jdocentral.com开始着手JDO2.0,想想看等它出台以后将是一个怎样激动人心得场面,让我们拭目以待。
用Hibernate来操纵持久数据非常简单,在这里一些简单的查询我会一笔带过,本文着重说明在综合查询兼有分页的时候我的一些经验,如果网友觉得我的方案还有不足的地方,也请和我讨论,我的email:plateau_t@sina.com.
第一部分:Hibernate提供的查询接口或其方法(此部分不做深究,请参考hibernate手册)
1。根据ID查询
要用到Session接口的load方法。
load(Class theClass, Serializable id)
load(Class theClass, Serializable id, LockMode lockMode)
load(Object object, Serializable id)
2。HQL语句进行查询
2。1 利用Query接口,Query由Session里的createQuery()来产生一个查询
1)不带参数的查询(这类比较简单)
Query query=session.createQuery("select user from User as user");
2)带参数的查询
Query query=session.createQuery("select user from User as user where user.name=?");
query.setString(0,name)//假设name为传过来的参数
Query query=session.createQuery("select user from User as user where user.name=:name");
query.setString("name",name)//假设name为传过来的参数
(多个参数以此类推)
利用Session接口的find查询
find(String query)
find(String query, Object[] values, Type[] types)
find(String query, Object value, Type type) 均返回list
如:
List list=session.find("select user from Users as user where user.name=?",name,Hibernate.STRING)
List list=session.find("select user from Users as user where user.name=? and user.pw=?",new Object[]{name,pw},new Type[]{Hibernate.STRING,Hibernate.STRING})
{推荐使用Query的方法进行查询}
第二部分:hibernate综合查询解决方案 (此部分详细实例说明,如有不足的地方请写信给我)
大家从第一部分可以看到,带有参数的查询,必须使用到Query接口,如上边:
Query query=session.createQuery("select users from Users as users where users.name=?");
query.setString(0,name)//假设name为传过来的参数
但是在系统中如何才能写一个公用的查寻方法呢?咋一看,似乎是不可以的,因为每一次查询的参数不一样,参数的数量不一样(如下代码),那么我们如何提取共性呢?
Query query=session.createQuery("select users from Users as users where users.name=? and users.pw=?");
query.setString(0,name)//假设name为传过来的参数
query.setString(1,pw);
首先说明,我的解决方案是从Seesion接口的find方法找到出口的,如下为Session接口得find()方法之一:
find(String query, Object[] values, Type[] types)
其中Object[]为存放参数值的数组,Type[]为存放参数类型的数组,他们的顺序是和query里“?” 的顺序是相同的。那么我为什么不用该find方法呢,因为如果有分页的情况,那么该方法将不适用。
下面详细要说明的解决方案:
首先我想创建三个新的对象:Paras.java(参数对象) ParasList.java(参数集合对象)HQuery.java
(感谢我的同事camel提供注释良好的代码)
1。Paras.java(参数对象)
package com.ifreeway.homegrown.testing.waf;
/**
*
* <p>Title:定义一个sql语句的条件参数类 </p>
* <p>Description: 可以使用有序的参数集合传送给sql/hql语句 </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: ifreeway</p>
* @author camel
* @version 1.0
*/
public class Paras {
/**
* 参数名称
*/
private Object pName;
/**
* 参数类型编码,于java.sql.types中的类型保持一致
*/
private int typeNo;
public Object getPName() {
return pName;
}
public void setPName(Object pName) {
this.pName = pName;
}
public int getTypeNo() {
return typeNo;
}
public void setTypeNo(int typeNo) {
this.typeNo = typeNo;
}
}
2。ParasList.java(参数集合对象)
package com.ifreeway.homegrown.testing.waf;
import java.util.ArrayList;
/**
*
* <p>Title: 参数集合类</p>
* <p>Description: 封装sql/hql的参数到该集合类,便于处理和传递</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: ifreeway</p>
* @author camel
* @version 1.0
*/
public class ParaList extends ArrayList {
/**
* 在指定位置添加一个参数对象
* @param index:参数的索引值
* @param p:需要加入的参数对象
*/
public void addParas(int index,Paras p){
super.add(index,p);
}
/**
* 在集合的最后位置添加一个参数对象
* @param p:需要加入的参数对象
*/
public void addParas(Paras p){
super.add(p);
}
/**
* 取得指定位置的参数对象
* @param index:参数的索引值
* @return:参数对象
*/
public Paras getParas(int index){
return (Paras)super.get(index) ;
}
/**
* 取得指定参数的索引
* @param p:参数对象
* @return:参数索引
*/
public int indexofParas(Paras p){
return super.indexOf(p) ;
}
/**
* 从集合中去掉一个指定的参数对象
* @param index:参数索引
*/
public void removeParas(int index){
super.remove(index) ;
}
}
3。HQuery.java
package com.ifreeway.homegrown.testing.waf;
/**
*
* <p>Title: HQL的语句封装类</p>
* <p>Description: 该对象封装HQL的查询语句,参数集合,排序参数,分组参数,单页起始地址 </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company:ifreeway </p>
* @author camel
* @version 1.0
*/
public class HQuery {
/**
* HQL查询语句
*/
private String queryString;
/**
* 参数集合对象
*/
private ParaList paralist;
/**
* 排序字段
*/
private String orderby;
/**
* 分组字段
*/
private String groupby;
/**
* 分页起始查询地址
*/
private int pageStartNo;
/**
* 取得一个Hibernate的Query对象
* @return:Query对象
*/
public String getQueryString() {
return queryString;
}
/**
* 设置一个HQL查询字符串
* @param queryString:查询字符串
*
*/
public void setQueryString(String queryString) {
this.queryString =queryString;
}
/**
* 取得参数集合对象
* @return:参数集合对象
*/
public ParaList getParalist() {
return paralist;
}
/**
* 设置参数集合对象
* @param paralist:参数集合对象
*/
public void setParalist(ParaList paralist) {
this.paralist = paralist;
}
/**
* 取得排序字段
* @return:排序字段
*/
public String getOrderby() {
return orderby;
}
/**
* 设置排序字段
* @param orderby
*/
public void setOrderby(String orderby) {
this.orderby = orderby;
}
/**
* 取得分组字段
* @return
*/
public String getGroupby() {
return groupby;
}
/**
* 设置分组字段
* @param groupby
*/
public void setGroupby(String groupby) {
this.groupby = groupby;
}
/**
* 取得页起始地址
* @return
*/
public int getPageStartNo() {
return pageStartNo;
}
/**
* 设置页起始地址
* @param pageStartNo
*/
public void setPageStartNo(int pageStartNo) {
this.pageStartNo = pageStartNo;
}
}
上面三个对象的关系是:
用Paras来装载每一个查询参数
Paras paras=new Paras();
paras.setPName(...);
paras.setTypeNo(...);
然后放在ParasList中
ParasList paraslist=new ParasList();
paraslist.add(paras)
最后把填充以后的ParasList集合给HQuery
HQuery hquery=new HQuery();
hquery.setParalist(paraslist);
先面我们写一个公用查寻方法,来实现我们的综合查询:
/**
*
* 综合查询,首先实例化HQuery
* @see com.ifreeway.homegrown.testing.common.waf.DBHandler#find(com.ifreeway.homegrown.testing.common.waf.HQuery)
*/
public List find(HQuery _query) throws HibernateException {
List itr = null;
try {
StringBuffer query_str = new StringBuffer(_query.getQueryString());
//是否要排序
if (_query.getOrderby() != null) {
query_str.append(_query.getOrderby());
}
//是否要分组
if (_query.getGroupby() != null) {
query_str.append(_query.getGroupby());
}
Session session = getSession();
Query query = session.createQuery(query_str.toString());
if (_query.getParalist() != null) {
List list = _query.getParalist();
for (int i = 0; i < list.size(); i++) {
Paras param = (Paras) list.get(i);
switch (param.getTypeNo()) {//此处要根据参数类型的增加要增加相应的“case”
case Types.VARCHAR :
query.setString(i, param.getPName().toString());
break;
case Types.INTEGER :
query.setInteger(
i,
((Integer) param.getPName()).intValue());
break;
case Types.DATE :
query.setDate(i, (java.sql.Date) param.getPName());
break;
case Types.DOUBLE :
query.setDouble(
i,
((Double) param.getPName()).doubleValue());
break;
case Types.BOOLEAN :
query.setBoolean(
i,
((Boolean) param.getPName()).booleanValue());
break;
case Types.CHAR :
query.setCharacter(
i,
((Character) param.getPName()).charValue());
break;
case Types.JAVA_OBJECT :
query.setEntity(i, (BaseModel) param.getPName());
break;
}
}
}
//是否存在分页,当_query.getPageStartNo()==0是不分页
if (_query.getPageStartNo() != 0) {
int pageno = _query.getPageStartNo();
query.setFirstResult((pageno - 1) * Constants.RECORD_PER_PAGE);
query.setMaxResults((pageno) * Constants.RECORD_PER_PAGE);
}
itr = query.list();
closeSession();
} catch (Exception e) {
}
return itr;
}
好了一旦我们做好了上边的工作,查询对我们来说将是很容易的一件事情,而且可以达到公用,是不是省了许多力气?下面我将实例化一个例子来进一步说明:
例子:
HQuery hquery=HQuery();
hquery.setQueryString("select users from Users as users where users.name=? and users.sex=?");
hquery.setOrderby("order by users.age desc");
//如果要分页,把当前页curpage传递给hquery
hquery.setPageStartNo(curpage);
//实例化参数,本例为两个参数
Paras paras1=new Paras();
paras1.setPName(name);
paras1.setTypeNo(Types.VARCHAR);
Paras paras2=new Paras();
paras2.setPName(sex);
paras2.setTypeNo(Types.INTEGER);
ParasList paraslist=new ParasList();
paraslist.add(paras1);
paraslist.add(paras2);//注意顺序
hquery.setParalist(paraslist);
//好了,做好准备工作,调用查寻方法得到结果
List list=find(hquery);
现在sun又加入jdocentral.com开始着手JDO2.0,想想看等它出台以后将是一个怎样激动人心得场面,让我们拭目以待。
用Hibernate来操纵持久数据非常简单,在这里一些简单的查询我会一笔带过,本文着重说明在综合查询兼有分页的时候我的一些经验,如果网友觉得我的方案还有不足的地方,也请和我讨论,我的email:plateau_t@sina.com.
第一部分:Hibernate提供的查询接口或其方法(此部分不做深究,请参考hibernate手册)
1。根据ID查询
要用到Session接口的load方法。
load(Class theClass, Serializable id)
load(Class theClass, Serializable id, LockMode lockMode)
load(Object object, Serializable id)
2。HQL语句进行查询
2。1 利用Query接口,Query由Session里的createQuery()来产生一个查询
1)不带参数的查询(这类比较简单)
Query query=session.createQuery("select user from User as user");
2)带参数的查询
Query query=session.createQuery("select user from User as user where user.name=?");
query.setString(0,name)//假设name为传过来的参数
Query query=session.createQuery("select user from User as user where user.name=:name");
query.setString("name",name)//假设name为传过来的参数
(多个参数以此类推)
利用Session接口的find查询
find(String query)
find(String query, Object[] values, Type[] types)
find(String query, Object value, Type type) 均返回list
如:
List list=session.find("select user from Users as user where user.name=?",name,Hibernate.STRING)
List list=session.find("select user from Users as user where user.name=? and user.pw=?",new Object[]{name,pw},new Type[]{Hibernate.STRING,Hibernate.STRING})
{推荐使用Query的方法进行查询}
第二部分:hibernate综合查询解决方案 (此部分详细实例说明,如有不足的地方请写信给我)
大家从第一部分可以看到,带有参数的查询,必须使用到Query接口,如上边:
Query query=session.createQuery("select users from Users as users where users.name=?");
query.setString(0,name)//假设name为传过来的参数
但是在系统中如何才能写一个公用的查寻方法呢?咋一看,似乎是不可以的,因为每一次查询的参数不一样,参数的数量不一样(如下代码),那么我们如何提取共性呢?
Query query=session.createQuery("select users from Users as users where users.name=? and users.pw=?");
query.setString(0,name)//假设name为传过来的参数
query.setString(1,pw);
首先说明,我的解决方案是从Seesion接口的find方法找到出口的,如下为Session接口得find()方法之一:
find(String query, Object[] values, Type[] types)
其中Object[]为存放参数值的数组,Type[]为存放参数类型的数组,他们的顺序是和query里“?” 的顺序是相同的。那么我为什么不用该find方法呢,因为如果有分页的情况,那么该方法将不适用。
下面详细要说明的解决方案:
首先我想创建三个新的对象:Paras.java(参数对象) ParasList.java(参数集合对象)HQuery.java
(感谢我的同事camel提供注释良好的代码)
1。Paras.java(参数对象)
package com.ifreeway.homegrown.testing.waf;
/**
*
* <p>Title:定义一个sql语句的条件参数类 </p>
* <p>Description: 可以使用有序的参数集合传送给sql/hql语句 </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: ifreeway</p>
* @author camel
* @version 1.0
*/
public class Paras {
/**
* 参数名称
*/
private Object pName;
/**
* 参数类型编码,于java.sql.types中的类型保持一致
*/
private int typeNo;
public Object getPName() {
return pName;
}
public void setPName(Object pName) {
this.pName = pName;
}
public int getTypeNo() {
return typeNo;
}
public void setTypeNo(int typeNo) {
this.typeNo = typeNo;
}
}
2。ParasList.java(参数集合对象)
package com.ifreeway.homegrown.testing.waf;
import java.util.ArrayList;
/**
*
* <p>Title: 参数集合类</p>
* <p>Description: 封装sql/hql的参数到该集合类,便于处理和传递</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: ifreeway</p>
* @author camel
* @version 1.0
*/
public class ParaList extends ArrayList {
/**
* 在指定位置添加一个参数对象
* @param index:参数的索引值
* @param p:需要加入的参数对象
*/
public void addParas(int index,Paras p){
super.add(index,p);
}
/**
* 在集合的最后位置添加一个参数对象
* @param p:需要加入的参数对象
*/
public void addParas(Paras p){
super.add(p);
}
/**
* 取得指定位置的参数对象
* @param index:参数的索引值
* @return:参数对象
*/
public Paras getParas(int index){
return (Paras)super.get(index) ;
}
/**
* 取得指定参数的索引
* @param p:参数对象
* @return:参数索引
*/
public int indexofParas(Paras p){
return super.indexOf(p) ;
}
/**
* 从集合中去掉一个指定的参数对象
* @param index:参数索引
*/
public void removeParas(int index){
super.remove(index) ;
}
}
3。HQuery.java
package com.ifreeway.homegrown.testing.waf;
/**
*
* <p>Title: HQL的语句封装类</p>
* <p>Description: 该对象封装HQL的查询语句,参数集合,排序参数,分组参数,单页起始地址 </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company:ifreeway </p>
* @author camel
* @version 1.0
*/
public class HQuery {
/**
* HQL查询语句
*/
private String queryString;
/**
* 参数集合对象
*/
private ParaList paralist;
/**
* 排序字段
*/
private String orderby;
/**
* 分组字段
*/
private String groupby;
/**
* 分页起始查询地址
*/
private int pageStartNo;
/**
* 取得一个Hibernate的Query对象
* @return:Query对象
*/
public String getQueryString() {
return queryString;
}
/**
* 设置一个HQL查询字符串
* @param queryString:查询字符串
*
*/
public void setQueryString(String queryString) {
this.queryString =queryString;
}
/**
* 取得参数集合对象
* @return:参数集合对象
*/
public ParaList getParalist() {
return paralist;
}
/**
* 设置参数集合对象
* @param paralist:参数集合对象
*/
public void setParalist(ParaList paralist) {
this.paralist = paralist;
}
/**
* 取得排序字段
* @return:排序字段
*/
public String getOrderby() {
return orderby;
}
/**
* 设置排序字段
* @param orderby
*/
public void setOrderby(String orderby) {
this.orderby = orderby;
}
/**
* 取得分组字段
* @return
*/
public String getGroupby() {
return groupby;
}
/**
* 设置分组字段
* @param groupby
*/
public void setGroupby(String groupby) {
this.groupby = groupby;
}
/**
* 取得页起始地址
* @return
*/
public int getPageStartNo() {
return pageStartNo;
}
/**
* 设置页起始地址
* @param pageStartNo
*/
public void setPageStartNo(int pageStartNo) {
this.pageStartNo = pageStartNo;
}
}
上面三个对象的关系是:
用Paras来装载每一个查询参数
Paras paras=new Paras();
paras.setPName(...);
paras.setTypeNo(...);
然后放在ParasList中
ParasList paraslist=new ParasList();
paraslist.add(paras)
最后把填充以后的ParasList集合给HQuery
HQuery hquery=new HQuery();
hquery.setParalist(paraslist);
先面我们写一个公用查寻方法,来实现我们的综合查询:
/**
*
* 综合查询,首先实例化HQuery
* @see com.ifreeway.homegrown.testing.common.waf.DBHandler#find(com.ifreeway.homegrown.testing.common.waf.HQuery)
*/
public List find(HQuery _query) throws HibernateException {
List itr = null;
try {
StringBuffer query_str = new StringBuffer(_query.getQueryString());
//是否要排序
if (_query.getOrderby() != null) {
query_str.append(_query.getOrderby());
}
//是否要分组
if (_query.getGroupby() != null) {
query_str.append(_query.getGroupby());
}
Session session = getSession();
Query query = session.createQuery(query_str.toString());
if (_query.getParalist() != null) {
List list = _query.getParalist();
for (int i = 0; i < list.size(); i++) {
Paras param = (Paras) list.get(i);
switch (param.getTypeNo()) {//此处要根据参数类型的增加要增加相应的“case”
case Types.VARCHAR :
query.setString(i, param.getPName().toString());
break;
case Types.INTEGER :
query.setInteger(
i,
((Integer) param.getPName()).intValue());
break;
case Types.DATE :
query.setDate(i, (java.sql.Date) param.getPName());
break;
case Types.DOUBLE :
query.setDouble(
i,
((Double) param.getPName()).doubleValue());
break;
case Types.BOOLEAN :
query.setBoolean(
i,
((Boolean) param.getPName()).booleanValue());
break;
case Types.CHAR :
query.setCharacter(
i,
((Character) param.getPName()).charValue());
break;
case Types.JAVA_OBJECT :
query.setEntity(i, (BaseModel) param.getPName());
break;
}
}
}
//是否存在分页,当_query.getPageStartNo()==0是不分页
if (_query.getPageStartNo() != 0) {
int pageno = _query.getPageStartNo();
query.setFirstResult((pageno - 1) * Constants.RECORD_PER_PAGE);
query.setMaxResults((pageno) * Constants.RECORD_PER_PAGE);
}
itr = query.list();
closeSession();
} catch (Exception e) {
}
return itr;
}
好了一旦我们做好了上边的工作,查询对我们来说将是很容易的一件事情,而且可以达到公用,是不是省了许多力气?下面我将实例化一个例子来进一步说明:
例子:
HQuery hquery=HQuery();
hquery.setQueryString("select users from Users as users where users.name=? and users.sex=?");
hquery.setOrderby("order by users.age desc");
//如果要分页,把当前页curpage传递给hquery
hquery.setPageStartNo(curpage);
//实例化参数,本例为两个参数
Paras paras1=new Paras();
paras1.setPName(name);
paras1.setTypeNo(Types.VARCHAR);
Paras paras2=new Paras();
paras2.setPName(sex);
paras2.setTypeNo(Types.INTEGER);
ParasList paraslist=new ParasList();
paraslist.add(paras1);
paraslist.add(paras2);//注意顺序
hquery.setParalist(paraslist);
//好了,做好准备工作,调用查寻方法得到结果
List list=find(hquery);
发表评论
-
spring mvc @controller unit test
2013-11-20 14:14 38471. spring mvc controller imple ... -
Tomcat 生产服务器性能优化
2013-07-23 06:45 978试想以下这个情景:你已经开发好了一个程序,这个程序的排版很不 ... -
Loading Multiple Spring Application Contexts with their own ClassLoader
2013-07-11 20:45 1038package de.incompleteco.spring ... -
ActiveMQ JMS的测试
2011-04-06 18:15 3887有二种方式可以测试。 1. 透过testng, 在测试类中完 ... -
Maven系列2--pom.xml 配置详解
2011-01-06 18:00 3145<project xmlns="http ... -
fisheye2.3.6 安装笔记
2010-09-16 20:25 2204一. 准备工作 1. 下载fisheye ... -
服务器端编程的十大性能问题
2010-09-15 12:01 1212今年5 月底,瑞士计算 ... -
JMX in spring 配置
2010-09-07 12:00 3020JConsole中的连接:简单的localhost:1099 ... -
Ehcache 2.0:后写式缓存和JTA支持
2010-05-22 11:13 1817开源缓存框架Ehcache 最 ... -
Twitter系统运维经验
2010-04-12 22:24 1515最近看到的另外一个 ... -
采用OSGi框架开发项目的十个问题
2010-03-21 18:08 1429近期,InfoQ针对Java模块 ... -
IBM和Eclipse加大对OSGi的支持
2010-03-21 18:05 1232为Java提供模块性的OSGi,正在受到IBM和Eclipse ... -
Castor功能与应用参考
2010-03-12 12:48 35751. 项目简介Castor是一个开源的Java项目 ... -
hibernate之 DetachedCriteria实现多表查询
2009-07-25 17:13 13060DetachedCriteria detachedCriter ... -
spring AOP 理论知识点总结
2009-07-24 17:47 21371.1 AOP 的概念 ... -
web.xml 中的listener、 filter、servlet 加载顺序及其详解
2009-07-02 16:14 4082在项目中总会遇到一些 ... -
maven笔记
2009-06-22 22:14 1493mvn package : 项目打包 mvn help:ef ... -
利用maven构建多模块项目
2009-06-17 14:28 53301. 先单独构建各模块为一个独立的项目。 jar项目: m ... -
Maven基础
2009-06-17 12:58 1827下载Maven安装文件。 定义环境变量M2_HOME到pat ... -
安装M2eclipse步骤
2009-06-15 14:45 37791.下载下列所需文件 eclipse3.4.2 ...
相关推荐
Hibernate提供的查询接口或其方法 hibernate综合查询解决方案
基于Struts、Hibernate、Spring和Oracle技术的车辆管理系统,以其稳定可靠、高效灵活的特性,为各类企事业单位提供了强大的车辆管理解决方案。 Struts作为MVC框架的代表,为车辆管理系统提供了清晰的业务逻辑与页面...
通用的在线考试系统是一个基于Java、JSP、Struts、Hibernate和Oracle数据库的综合性考试解决方案。它为教育机构、企业和个人提供了一个高效、灵活且可扩展的在线考试平台。该系统具有以下主要功能: 1. 用户管理:...
通用的在线考试系统是一个基于Java、JSP、Struts、Hibernate和Oracle数据库的综合性考试解决方案。它为教育机构、企业和个人提供了一个高效、灵活且可扩展的在线考试平台。该系统具有以下主要功能: 1. 用户管理:...
OA办公自动化管理系统是一款基于Struts1.2、Hibernate3.0、Spring2和DWR的综合性企业级应用解决方案,旨在帮助企业实现高效、便捷的办公管理。该系统具备以下功能: 1. 用户管理:支持用户注册、登录、权限分配、...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
基于SpringBoot的疾病防控综合系统是一个针对疾病预防和控制需求而设计的应用,它...总之,此系统的设计旨在通过集成多项服务和技术,提供一个全面、多角度的疾病防控解决方案,从而有效提升疾病预防和控制的工作效率。
JSP宝典PDF电子版下载,JSP宝典全书比较全面地介绍了有关JSP的相关知识,并通过大量实例,循序渐进地教会读者如何构架和...JSP宝典的第三部分对最为流行的MVC解决方案Struts和数据库持久层结束Hibernate作了重点介绍。
JSP宝典PDF电子版下载,JSP宝典全书比较全面地介绍了有关JSP的相关知识,并通过大量实例,循序渐进地教会读者如何构架和...JSP宝典的第三部分对最为流行的MVC解决方案Struts和数据库持久层结束Hibernate作了重点介绍。
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...