zoukankan      html  css  js  c++  java
  • JPA 查询

    1.查询所有信息
    Query q = em.createQuery("select u from Userinfo u");
    List list =q.getResultList();
    如果查询结果是多个,应该使用Query接口的getResultList方法,如果查询结果只有一个,可以使用Query接口的getSingleResult方法。
    命名查询:
    @NamedQuery(name = "findAllUser", query = "SELECT u FROM Userinfo u")
    name表示该查询的名字,query是查询语句本身。命名查询可以写在实体类中,第一次课生成的实体类中就有多个命名查询。
    对于命名查询可以使用EntityManager的createNamedQuery方法,要访问上面的查询可以使用下面的代码:
    Query q = em.createNamedQuery("findAllUser");
    List<Userinfo> list =q.getResultList();
    createNamedQuery方法的参数命名查询的名字。
    2.使用Query完成分页
    分页显示就是每次只显示部分对象的信息。要显示哪一部分信息取决于从什么地方开始显示,显示到什么地方。Query接口可以控制要获取的记录,有两个方法来设置要获取的第一条记录和最后一条记录。两个方法的定义分别如下:
    setMaxResults(int maxResult),参数是要查询的最大记录数。
    setFirstResult(int startposition),参数是第一个要查询的记录的位置。
    通过这两个属性完成分页显示。
    注意:分页必须用apache-openjpa-1.0.2-binary.zip , 1.0.1不起作用是个Bug
    3.条件查询
    条件查询,需要在查询语句中使用变量,可以有两种方式:位置参数和名字参数。
    位置参数
    在位置参数中,使用“?”号加上参数的序号的方式表示参数。
    例,根据用户名username查询用户。
    SELECT u FROM Userinfo u where u.username = ?1
    1表示第一个参数。
    在位置参数中,可以使用多个参数,可以用不同的数字表示。同一个参数可以在查询中出现多次。
    名字参数
    在名字参数种,使用“:”号加上参数的名字的方式表示参数。
    例,根据用户类型查询用户。
    SELECT u FROM Userinfo u WHERE u.usertype = :usertype
    “:”号后面的usertype就是参数的名字。
    不管是位置参数还是名字参数都可以在命名查询中使用。
    位置参数的赋值通过Query接口的相应方法完成,主要方法如下:
    public Query setParameter(int position,Object value)
    public Query setParameter(int position,Date value,TemporalType temporalType)
    public Query setParameter(int position,Calendar value,TemporalType temporalType)
    用于名字参数的赋值方法基本相同,只是第一个参数用于指定参数的名字。主要方法如下:
    public Query setParameter(String name,Object value)
    public Query setParameter(String name,Date value,TemporalType temporalType)
    public Query setParameter(String name,Calendar value,TemporalType temporalType)
    例1:使用前面介绍的根据用户名进行查询的语句。
    Query q = em.createQuery("SELECT u FROM Userinfo u where u.username = ?1");
    q = q.setParameter(1,username);
    List<Userinfo> list =q.getResultList();
    例2:使用前面介绍的根据用户类型进行查询的语句。
    Query q = em.createQuery("SELECT u FROM Userinfo u WHERE u.usertype = :usertype");
    q = q.setParameter("usertype",usertype);
    List<Userinfo> list =q.getResultList();

    转自:http://hi.baidu.com/249116148/blog/item/e5273ef522c97720bc310928.html

  • 相关阅读:
    VS2008 环境中完美搭建 Qt 4.7.4 静态编译的调试与发布 Inchroy's Blog 博客频道 CSDN.NET
    编写可丢弃的代码
    c++ using namespace std; 海明威 博客园
    解决MySQL server has gone away
    nginx upstream 调度策略
    (2006, 'MySQL server has gone away') 错误解决 dba007的空间 51CTO技术博客
    Linux IO模型漫谈(2) 轩脉刃 博客园
    redis源码笔记 initServer 刘浩de技术博客 博客园
    MySQLdb批量插入数据
    词库的扩充百度百科的抓取你知道这些热词吗? rabbit9898 ITeye技术网站
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6469702.html
Copyright © 2011-2022 走看看