Java 获取单个单元格值的Sql语句

Java 获取单个单元格值的Sql语句,java,hibernate,Java,Hibernate,我需要从表中获取单个单元格的值。我正在使用hibernate和SpringMVC 我所做的是: Session s = getSessionFactory().getCurrentSession(); query q= s.createQuery("select xxx from abc where asd=:asd"); 现在,我需要将这个值保存到一个字符串变量中,并需要使用这个字符串变量与jsp页面中使用标记的其他字符串进行比较 这就是我现在拥有的 @Transactional pub

我需要从表中获取单个单元格的值。我正在使用hibernate和SpringMVC

我所做的是:

Session s = getSessionFactory().getCurrentSession();  
query q= s.createQuery("select xxx from abc where asd=:asd");
现在,我需要将这个值保存到一个字符串变量中,并需要使用这个字符串变量与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页面中使用返回值来检查是或否…如何将其传递到我的jsp页面..

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

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

查询结果如何转换为字符串当然取决于
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();

在控制器中编写以下代码

// 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>

现金
其他付款方式

要获得单个结果,请使用
getFirstResult()
getSingleResult()
注意由于以下原因,这两种方法在您的案例中都不是特别有用:

  • 调用
    getFirstResult()
    将返回 查询返回的集合,该集合可能是 您正在寻找的元素
  • 调用
    getUniqueResult()
    期望查询返回 如果返回的集合为空或有多个条目,则只返回一个项,并导致引发异常
一幅有插图的画

//sessionFactory=getHibernateTemplate().getSessionFactory();
会话会话=getSessionFactory().getCurrentSession();
Query=session.createQuery(“从表中选择值,其中…”);
query.setParameters(“param1”,value1);
结果=(类型)query.uniqueResult()//该类型是您所需的结果类型。
//如果需要,在此处测试null
确保查询只返回一个结果。如果找到多个匹配结果(因此
query.setMaxResults(1);
更合适),它将抛出
ununiqueresultexception


这是相对典型的任务。目前的实施情况如何?您在实施过程中遇到了哪些问题(如果有的话)?到目前为止还没有问题。。!所有其他的实现都很好..我被这个要求困住了..甚至jsp页面c标记也很好(用不同的值集检查)…唯一的问题是如何将特定的sql语句值保存到字符串变量..如果它有效,我可以让它与其他部分一起工作..这就是我现在拥有的
@Transactional public String getUseNis(String code){Session s=getSessionFactory().getCurrentSession();Query q=s.createQuery(“从代码=:code的位置选择useNis”);q.setString(“code”,code);String result=(String)q.uniqueResult();return result;
我需要在jsp页面中使用返回值来检查是或否……如何将其传递到我的jsp页面……我知道您最初的问题是如何从查询中获取单个字符串,因为有以下注释:“唯一的问题是如何将特定的sql语句值保存到字符串变量中。如果它起作用,我可以让它与其他部分一起工作。”。"是的..我仍然对字符串变量值有问题..因为我没有在任何地方调用该方法…我不知道如何调用它这是另一回事。我只给出了原始问题的答案。关于如何传递值,请查看您的web框架文档或将值存储到您的备份bean或直接存储到会话.