最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

数据字典设计之投影查询的方法

来源:懂视网 责编:小采 时间:2020-11-27 20:17:30
文档

数据字典设计之投影查询的方法

数据字典设计之投影查询的方法:投影查询指的是:单击下拉框,显示数据库中数据字典表已有的数据类型名称,无重复的遍历到下拉菜单中,如图所示1.在ElecSystemDDLAction的home添加:public class ElecSystemDDLAction extends BaseAction<ElecSystemDDL&
推荐度:
导读数据字典设计之投影查询的方法:投影查询指的是:单击下拉框,显示数据库中数据字典表已有的数据类型名称,无重复的遍历到下拉菜单中,如图所示1.在ElecSystemDDLAction的home添加:public class ElecSystemDDLAction extends BaseAction<ElecSystemDDL&
  投影查询指的是:单击下拉框,显示数据库中数据字典表已有的数据类型名称,无重复的遍历到下拉菜单中,如图所示

1.在ElecSystemDDLAction的home添加:

public class ElecSystemDDLAction extends BaseAction<ElecSystemDDL>{
 ElecSystemDDL elecSystemDDL=this.getModel(); 
 //注入数据字典service@Resource(name=IElecSystemDDLService.SERVICE_NAME)
 IElecSystemDDLService elecSystemDDLService; /** 
 * @Name: home
 * @Description: 跳转到数据字典页面
 * @Parameters: 无
 * @Return: String:跳转到system/dictionaryIndex.jsp*/public String home(){// 1:查询数据库中已有的数据类型,返回List<ElecSystemDDL>集合
 List<ElecSystemDDL> list=elecSystemDDLService.findSystemDDLListByDistinct();
// 2:将ElecSystemDDL对象放入request中
 request.setAttribute("list", list);return "home";
 }
}

2.在IElecSystemDDLService中声明投影查询方法:

public interface IElecSystemDDLService {public static final String SERVICE_NAME="cn.elec.service.impl.ElecSystemDDLServiceImpl";

 List<ElecSystemDDL> findSystemDDLListByDistinct();
 
}

3.在ElecSystemDDLServiceImpl中进行重写:

public class ElecSystemDDLServiceImpl implements IElecSystemDDLService{//数据字典Dao@Resource(name=IElecSystemDDLDao.SERVICE_NAME)private IElecSystemDDLDao elecSystemDDLDao; 
 /** 
 * @Name: findSystemDDLListByDistinct
 * @Description: 查询数据库中已有的数据类型,去掉重复值
 * @Parameters: 无
 * @Return: List:存储数据类型集合*/@Override
 @Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false)public List<ElecSystemDDL> findSystemDDLListByDistinct() {
 List<ElecSystemDDL> list=elecSystemDDLDao.findSystemDDLListByDistinct();return list;
 }
}

4.在IElecSystemDDLDao中声明投影查询方法:

public interface IElecSystemDDLDao extends ICommonDao<ElecSystemDDL> {public static final String SERVICE_NAME="cn.elec.dao.imp.ElecSystemDDLImpl";

 List<ElecSystemDDL> findSystemDDLListByDistinct();
}

5.在ElecSystemDDLImpl中重写该方法:

@Repository(IElecSystemDDLDao.SERVICE_NAME)public class ElecSystemDDLImpl extends ICommonDaoImpl<ElecSystemDDL> implements IElecSystemDDLDao{/** 
 * @Name: findSystemDDLListByDistinct
 * @Description: 查询数据库中已有的数据类型,去掉重复值
 * @Parameters: 无
 * @Return: List:存储数据类型集合*/@Overridepublic List<ElecSystemDDL> findSystemDDLListByDistinct() {//返回List集合List<ElecSystemDDL> systemList = new ArrayList<ElecSystemDDL>();/**方法一:投影查询一个字段返回List<Object>中
 String hql="SELECT DISTINCT o.keyword FROM ElecSystemDDL o";
 List<Object> list = this.getHibernateTemplate().find(hql);
 //组织页面返回结果
 if(list!=null&&list.size()>0){
 for(Object obj:list){
 ElecSystemDDL elecSystemDDL = new ElecSystemDDL();
 //设置数据类型,并添加到systemList
 elecSystemDDL.setKeyword(obj.toString());
 systemList.add(elecSystemDDL);
 }
 }*///方法二:使用hql语句直接将投影查询的字段放置到对象中String hql="SELECT DISTINCT new cn.elec.domain.ElecSystemDDL(o.keyword) FROM ElecSystemDDL o";
 systemList=this.getHibernateTemplate().find(hql);return systemList;
 }
}

  其中第二种查询方案需要在ElecSystemDDL中创建一个带参得的构造方法:

public ElecSystemDDL() {//无参构造方法} 
public ElecSystemDDL(String keyword) {//带参构造方法this.keyword=keyword;
}  

6.在dictionaryIndex.jsp遍历:

  因为在Actionl类中将List<ElecSystemDDL>集合放入request对象中,属性名为list。当dictionary.jsp页面获得request.list之后需要将ElecSystemDDL对象的keyword属性遍历出来,放入下拉选项框中,有两种方案:

<tr>
 <td class="ta_01" align="right" width="35%" >类型列表:</td>
 <td class="ta_01" align="left" width="30%" >
 <!-- 方案一 <select name="keyword" class="bg" style="width:180px" onchange="changetype()">
 <option value="jerrynew"></option>
 <s:iterator value="#request.list" var="sys">
 <option value="<s:property value="#sys.keyword"/>">
 <s:property value="#sys.keyword"/>
 </option>
 </s:iterator>
 </select>
 --> 
 
 <!-- 方案二 -->
 <s:select list="#request.list" name="keyword" id="keyword" 
 listKey="keyword" listValue="keyword" 
 headerKey="jerrynew" headerValue="" 
 cssClass="bg" cssStyle="width:180px" onchange="changetype()">
 </s:select>
 
 </td>
</tr>

测试,在数据字典首页功能页面中,下拉菜单能正确显示类型名称。

1.hql和sql语句的投影查询:

(1)如果投影查询是一个字段,此时返回List<Object>,例如

String hql = "SELECT DISTINCT o.keyword FROM ElecSystemDDL o";
List<Object> list = this.getHibernateTemplate().find(hql);

(2)如果投影查询是多个字段,此时返回List<Object[]>,例如

String hql = "SELECT DISTINCT o.keyword,o.ddlName FROM ElecSystemDDL o";
List<Object[]> list = this.getHibernateTemplate().find(hql);

(3)如果投影查询是多个字段,此时返回List<Object[]>,例如

String hql = "SELECT o,o.ddlName FROM ElecSystemDDL o";
List<Object[]> list = this.getHibernateTemplate().find(hql);

  数组的第一个值,是一个ElecSystemDDL的对象,数组的第二个值表示字段ddlName的值。

(4)如果投影查询是一个对象,此时返回List<ElecSystemDDL>,例如

String hql = "SELECT o FROM ElecSystemDDL o";
List<ElecSystemDDL> list = this.getHibernateTemplate().find(hql);

(5)如果是hql语句,使用hql语句直接将投影查询的字段放置到对象中,例如

String hql = "SELECT DISTINCT new cn.itcast.elec.domain.ElecSystemDDL(o.keyword) FROM ElecSystemDDL o";
List<ElecSystemDDL> list = this.getHibernateTemplate().find(hql);

2.页面使用select进行遍历List<ElecSystemDDL>

(1)方案一:使用<s:iterator>遍历<option>

<select name="keyword" class="bg" style="width:180px" onchange="changetype()">
 <option value="jerrynew"></option>
 <s:iterator value="#request.list" var="system">
 <option value="<s:property value="#system.keyword"/>">
<s:property value="#system.keyword"/>
</option>
 </s:iterator>
</select>

(2)方案二:使用<s:select>

<s:select list="#request.list" name="keyword" id="keyword"listKey="keyword" listValue="keyword"headerKey="jerrynew" headerValue=""cssClass="bg" cssStyle="width:180px" onchange="changetype()">
</s:select>

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

数据字典设计之投影查询的方法

数据字典设计之投影查询的方法:投影查询指的是:单击下拉框,显示数据库中数据字典表已有的数据类型名称,无重复的遍历到下拉菜单中,如图所示1.在ElecSystemDDLAction的home添加:public class ElecSystemDDLAction extends BaseAction<ElecSystemDDL&
推荐度:
标签: 查询 方法 设计
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top