• 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

  • 相关阅读:
    VC++界面编程个性化你的工具栏图标(转)
    C/C++指令 #undef ,#ifdef, #ifndef,#if的用法(转)
    为自定义工具栏按钮添加消息响应函数
    VC++深入详解:函数的重载 (转)
    NP和P问题
    How To Compile A Kernel The Ubuntu Way
    【转】关闭对话框,OnClose和OnCancel MFC中屏蔽ESC和回车关闭对话框
    MFC学习笔记之ClassWizard
    《c专家编程》学习笔记一
    <转>C语言中的文件输入输出函数
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6469702.html
Copyright © 2020-2023  润新知