Sql语句获取单个单元格值

时间:2012-07-16 18:29:13

标签: java hibernate

我需要从表中获取单个单元格值。我正在使用Spring MVC进行hibernate。

我做的是:

Session s = getSessionFactory().getCurrentSession();  
query q= s.createQuery("select xxx from abc where asd=:asd");

现在,我需要将此单个值保存到字符串变量中,并且需要使用此字符串变量与使用<c:choose> <c:when> <c:otherwise>标记的jsp页面中的其他字符串进行比较...

这就是我现在所拥有的......

@Transactional
public String getUseNis(String code) {
Session s = getSessionFactory().getCurrentSession();
Query q = s.createQuery("select useNis from tle_location where code = :code");
q.setString("code", code);
String result = (String) q.uniqueResult();
return result; 

我需要在jsp页面中使用返回值来检查yes或no ...如何将它传递给我的jsp页面..

3 个答案:

答案 0 :(得分:4)

要获得单个结果,请使用getFirstResult()getSingleResult()注意由于以下原因,这两种情况都不是特别有用:

  • 调用getFirstResult()将返回第一个元素 您的查询返回的集合,可能是也可能不是 你正在寻找的元素。
  • 调用getUniqueResult()期望返回查询 完全一个项目,如果返回的集合为空或有多个条目,则会引发异常。

uniqueResult()的插图。

//sessionFactory = getHibernateTemplate().getSessionFactory();
Session session = getSessionFactory().getCurrentSession();
Query query = session.createQuery("select value from table where ...");
query.setParameters("param1", value1);
result = (Type) query.uniqueResult(); //The type is you desired result type.
//test for null here if needed

确保查询仅返回单个结果。它将抛出NonUniqueResultException - 如果找到多个匹配结果(因此query.setMaxResults(1);更合适)。

http://www.java2s.com/Code/Java/Hibernate/UniqueResultHQL.htm

答案 1 :(得分:0)

首先,您必须为:asd设置值,但这可能很清楚。

然后你去执行查询并转换结果。因为您似乎希望此查询返回单个值,所以可以通过Query.uniqueResult执行。如果您想在假设一个且只有一个非null结果出错的情况下采取某些特定操作,请对返回的空值作出反应或相应地抛出NonUniqueResultException

查询结果如何转换为字符串当然取决于xxx的类型和字符串表示的首选格式。一些例子如下:

//type of xxx is already string
String result = (String) q.uniqueResult();

//type of xxx is Integer
Integer res = (Integer) q.uniqueResult();
String result = res.toString();

答案 2 :(得分:0)

在Controller中编写以下代码

// Fetch the result by executing query and store it into string variable as
String typeofpayment = serviceObj.getValueFromDB();
model.addAttribute("typeofpayment",typeofpayment); // This will pass attribute to jsp page

现在在jsp中你可以使用

<c:set var="typeOfPaymentVar" value="${typeofpayment}" scope="request" />
<c:choose>
     <c:when test='${typeOfPaymentVar=="cash"}'>
          CASH
     </c:when>
     <c:otherwise>
          OTHER MODE OF PAYMENT
     </c:otherwise>
</c:choose>