测试主文件JSP:
ComboboxTest.js
JAVA Model
ComboArea.java
ComboCity.java
ComboProvince.java
Struts
xml
Action
Service
package com.gwtjs.service;
import java.util.List;
import com.gwtjs.model.ComboArea;
import com.gwtjs.model.ComboCity;
import com.gwtjs.model.ComboProvince;
public interface AreaService {
public List<ComboProvince> execute(final String ascProperty, final boolean isAsc) ;
public List<ComboCity> findCitys(Object fatherID);
public List<ComboArea> findAreas(Object fatherID);
}
package com.gwtjs.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gwtjs.dao.ComboAreaManager;
import com.gwtjs.dao.ComboCityManager;
import com.gwtjs.dao.ComboProvinceManager;
import com.gwtjs.model.ComboArea;
import com.gwtjs.model.ComboCity;
import com.gwtjs.model.ComboProvince;
import com.gwtjs.model.utils.Pager;
import com.gwtjs.service.AreaService;
@Service("areaService")
public class AreaServiceImpl implements AreaService {
@Autowired
private ComboProvinceManager provinceDao;
@Autowired
private ComboCityManager cityDao;
@Autowired
private ComboAreaManager areaDao;
@Override
public List<ComboProvince> execute(final String ascProperty, final boolean isAsc) {
Pager<ComboProvince> p = provinceDao.findAll(ComboProvince.class, ascProperty, isAsc);
return p.getEntityList();
}
@Override
public List<ComboCity> findCitys(Object fatherID) {
return cityDao.findPropertyAll(ComboCity.class, "fatherID", fatherID).getEntityList();
}
@Override
public List<ComboArea> findAreas(Object fatherID) {
return areaDao.findPropertyAll(ComboArea.class, "fatherID", fatherID).getEntityList();
}
}
Hibernate Dao
package com.gwtjs.dao;
import com.gwtjs.model.ComboProvince;
public interface ComboProvinceManager extends EntityDao<ComboProvince,Integer>{
}
package com.gwtjs.dao;
import com.gwtjs.model.ComboCity;
public interface ComboCityManager extends EntityDao<ComboCity, Integer> {
}
package com.gwtjs.dao;
public interface ComboAreaManager extends
EntityDao<com.gwtjs.model.ComboArea, Integer> {
}
上面的是三个Java类接口,拷贝到一起了,实现类为空的实现,只为了类型映射方便而已
EntityDao 接口
/**
* <h2>按属性查全部,无分页,无排序 - 1</h2>
*
* @param entityClass
* @param attrName
* @param attrNo
* @return
*/
public Pager<T> findPropertyAll(Class<T> entityClass, String attrName,
Object attrNo);
/**
* <h2>按属性查全部 - 4</h2>
* @param enterprise 企业标识
* @param entityClass
* 实体
* @param attrName
* 查询的属性名
* @param attrNo
* 属性值
* @param start
* @param limit
* @param ascProperty
* @param isAsc
* @return
*/
public Pager<T> findPropertyAll(Class<T> entityClass, Integer enterprise,
String attrName, Object attrNo, Integer start, Integer limit,
String ascProperty, boolean isAsc);
EntityDaoImpl实现类
/**
* <h2>按属性查全部 - 1</h2>
*
* @param entityClass
* 实体
* @param attrName
* 查询的属性名
* @param attrNo
* 属性值
* @return
*/
@Override
public Pager<T> findPropertyAll(Class<T> entityClass, String attrName,
Object attrNo) {
return findPropertyAll(entityClass, attrName, attrNo, null, true);
}
/**
* <h2>按属性查全部 - 2</h2>
*
* @param entityClass
* 实体
* @param attrName
* 查询的属性名
* @param attrNo
* 属性值
* @param ascProperty
* @param isAsc
* @return
*/
@Override
public Pager<T> findPropertyAll(Class<T> entityClass, String attrName,
Object attrNo, String ascProperty, boolean isAsc) {
return findPropertyAll(entityClass, attrName, attrNo, 0, 0,
ascProperty, isAsc);
}
/**
* <h2>按属性查全部 - 3</h2>
*
* @param entityClass
* 实体
* @param attrName
* 查询的属性名
* @param attrNo
* 属性值
* @param start
* @param limit
* @param ascProperty
* @param isAsc
* @return
*/
public Pager<T> findPropertyAll(final Class<T> entityClass,
final String attrName, final Object attrNo, final Integer start,
final Integer limit, final String ascProperty, final boolean isAsc) {
return findPropertyAll(entityClass, null, attrName, attrNo, start,
limit, ascProperty, isAsc);
}
@Override
/**
* <h2>按属性查全部 - 4</h2>
* @param entityClass 实体
* @param attrName 查询的属性名
* @param attrNo 属性值
* @param start
* @param limit
* @param ascProperty
* @param isAsc
* @return
*/
public Pager<T> findPropertyAll(final Class<T> entityClass,
final Integer enterprise, final String attrName,
final Object attrNo, final Integer start, final Integer limit,
final String ascProperty, final boolean isAsc) {
Pager<T> p = new Pager<T>();
StringBuilder sb = new StringBuilder();
sb.append("SELECT * FROM ");
sb.append(MyHibernateConfigurationHelper.getTableName(entityClass));
if (null != attrName && null != attrNo) {
sb.append(" WHERE ");
sb.append(attrName);
sb.append("='");
sb.append(attrNo);
sb.append("'");
}
if (null!=enterprise && 0 != enterprise) {
sb.append(MyHibernateConfigurationHelper.buildSql(sb.toString()," AND "));
sb.append(" enterprise=");
sb.append(enterprise);
}
String countSql = sb.toString();// 总记录数sql
if (null != ascProperty) {
sb.append(" ORDER BY ");
sb.append(ascProperty);
if (isAsc) {
sb.append(" ASC ");
} else {
sb.append(" DESC ");
}
}
if (0 != limit) {
sb.append(" LIMIT ");
sb.append(start);
sb.append(",");
sb.append(limit);
}
int myRefreshPeriod = 600; // 秒/10分钟
String key = getKey(sb.toString());
try {
p = (Pager<T>) admin.getFromCache(key, myRefreshPeriod);
logger.info("本次从 OSCache 中读取数据...........");
} catch (NeedsRefreshException e) {
Query q = getSession().createSQLQuery(sb.toString())
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
p.setEntityList(q.list());
p.setTotalCounts(getEntityCount(countSql));// 总记录数
admin.putInCache(key, p);// 往内存中填值
logger.info("本次从 DataBase 中读取数据.................");
}
sb.delete(0, sb.length());
return p;
}
数据库网上找找,有
没有到群29521319下
源码也可以到此群下