• hibernate demo查询语句


    dept.java

    public class dept {
    private int deptid;
    private String deptname;
    private Set<employee> emps= new HashSet<employee>();
    public int getDeptid() {
        return deptid;
    }
    public void setDeptid(int deptid) {
        this.deptid = deptid;
    }
    public String getDeptname() {
        return deptname;
    }
    public void setDeptname(String deptname) {
        this.deptname = deptname;
    }
    public Set<employee> getEmps() {
        return emps;
    }
    public void setEmps(Set<employee> emps) {
        this.emps = emps;
    }
    
    }

    dept.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
        
        
        
    <hibernate-mapping  package="cn.itcast.aquery" >  
        <class name="dept"  table="t_dept">
        <id name="deptid" >
        <generator class="native"></generator>
        
        </id>
        <property name="deptname" length="20"/>   
    //该处 length=20 如果不加引号,myeclipse会提示无法读取xml , 错误信息 !该处错误较为难找!
    <set name="emps"> <key column="dept_id"></key> <one-to-many class="employee"/> </set> </class> </hibernate-mapping>

    employee.java

    public class employee {
    private int empid;
    private String empname;
    private double salary;
    private dept dept;
    public int getEmpid() {
        return empid;
    }
    public void setEmpid(int empid) {
        this.empid = empid;
    }
    public String getEmpname() {
        return empname;
    }
    public void setEmpname(String empname) {
        this.empname = empname;
    }
    public double getSalary() {
        return salary;
    }
    public void setSalary(double salary) {
        this.salary = salary;
    }
    public dept getDept() {
        return dept;
    }
    public void setDept(dept dept) {
        this.dept = dept;
    }
    
    }

    employee.hbm.xml

    <hibernate-mapping  package="cn.itcast.aquery" >  
        <class name="employee"  table="t_employ">
        <id name="empid" >
        <generator class="native"></generator>
        
        </id>
        <property name="empname"  length="20" />
        
         
         <property name="salary" type="double"></property>
         <many-to-one name="dept" column="dept_id "  class="dept"></many-to-one>
        
    
    
        </class>
        </hibernate-mapping>

    app.java

    public class app {
        private static SessionFactory  sf;
        static {
            sf=new Configuration().configure().addClass(dept.class).addClass(employee.class).buildSessionFactory();
        }
        @Test
        public void get_load() throws Exception{
            Session  session=sf.openSession();
            session.beginTransaction();
            dept dept=(dept)session.get(dept.class,2);
            System.out.println(dept.getDeptname());
            System.out.println(dept.getEmps());
            session.getTransaction().commit();
            session.close();
    
        }
        }

    2.HQL查询

    dept.hbm.xml   

    <hibernate-mapping  package="cn.itcast.aquery"      auto-import="true">  

    app.java

    Query q=session.createQuery("from dept");
    System.out.println(q.list());

    如果auto-import ="false'      Query q=session.createQuery("from cn.itcast.aquery.dept");   该处要写完整包名

    ===============================

    3.将查询语句放入配置文件中

    public class app {
    private static SessionFactory sf;
    static {
    sf=new Configuration().configure().addClass(dept.class).addClass(employee.class).buildSessionFactory();
    }
    @Test
    public void get_load() throws Exception{
    Session session=sf.openSession();
    session.beginTransaction();
    /*    dept dept=(dept)session.get(dept.class,2);
    System.out.println(dept.getDeptname());
    System.out.println(dept.getEmps());*/
    
    
    //Query q=session.createQuery("select d.deptid,d.deptname from dept d");

    Query q = session.getNamedQuery("getalldept"); //配置文件中 配置名称 getalldept

    /* q.setParameter("myid", 0); q.setParameter("name", "财务部");*/


    q.setParameter(0,7); System.out.println(q.list()); session.getTransaction().commit(); session.close(); } }

    dept.hbm.xml

    <hibernate-mapping package="cn.itcast.aquery" auto-import="true"> <class name="dept" table="t_dept"> <id name="deptid" > <generator class="native"></generator> </id> <property name="deptname" length="20"/> <set name="emps"> <key column="dept_id"></key> <one-to-many class="employee"/> </set> </class> <query name="getalldept"> <!-- from dept d where deptid=:myid or deptname=:name--> <![CDATA[ from dept d where deptid < ? ]]> </query> </hibernate-mapping>
    4。 Criteria 查询,
    @Test
    public void criteria() {
    
    Session session = sf.openSession();
    session.beginTransaction();
    
    Criteria criteria = session.createCriteria(Employee.class);
    // 构建条件
    criteria.add(Restrictions.eq("empId", 12));
    //    criteria.add(Restrictions.idEq(12)); // 主键查询
    
    System.out.println(criteria.list());
    
    
    session.getTransaction().commit();
    session.close();
    }
    
    5。    SQLQuery, 本地SQL查询
    // 不能跨数据库平台: 如果该了数据库,sql语句有肯能要改。
    @Test
    public void sql() {
    
    Session session = sf.openSession();
    session.beginTransaction();
    
    SQLQuery q = session.createSQLQuery("SELECT * FROM t_Dept limit 5;")
    .addEntity(Dept.class); // 也可以自动封装
    System.out.println(q.list());
    
    session.getTransaction().commit();
    session.close();
    }
    
    }
  • 相关阅读:
    Linq in
    wp7中应用程序清单(WMAppManifest.xml)详细说明
    wp7 给TextBox设置圆角边框
    js 中的闭包
    远程控制PPT软件的帮助
    wp7三种图标大小配置
    在英文版的sqlserver下用LIKE语句不能查询中文
    程序员版《那些年我们一起追过的女孩》(2)
    程序员版《那些年我们一起追过的女孩》(3)
    webbrowser 请求的资源在使用中。 (异常来自 HRESULT:0x800700AA)
  • 原文地址:https://www.cnblogs.com/yimian/p/7888847.html
Copyright © 2020-2023  润新知