• 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

  • 相关阅读:
    计算属性(computed)、方法(methods)和侦听属性(watch)的区别与使用场景
    DatagramChannel
    IIS发布问题集锦
    ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
    MVC教程--MiniProfiler.EF监控调试MVC和EF的性能
    关于EF输出sql的执行日志
    Entity Framework扩展库
    C#中特性,以及应用场景(收藏链接)
    ajax原理
    .net中session无效
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6469701.html
Copyright © 2020-2023  润新知