Criteria学习001之初步认识

来源:互联网 发布:如何删除淘宝收货地址 编辑:程序博客网 时间:2024/05/03 13:27

     工作2年多了,Hibernate使用不多,更别说精通了。平时都是习惯写sql,连hql都不太想写,觉得别扭,特别是如果查询比较复杂时,需要根据执行计划确保sql较优,如果是hibernate来自动生成,心里特不踏实。本人对hibernate一直比较抵触。不愿花时间去深入学习hibernate,更别说Criteria了。现在换了新公司,新公司的项目使用hibernate的,并且查询都是用Criteria,这就逼得我不得不学习了。现在慢慢的一步一步的记录下学习过程吧。

    Criteria是一种比hql更面向对象的查询方式,使用它,不需要你写sql,hql,一切都自动生成。

    废话不多说了,简单搭建了个hibernate环境,动手敲代码,通过小例子来慢慢学习吧。


 

Student.java

package com.fei.hibernate.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="student")public class Student {@Id@GeneratedValue(strategy=GenerationType.IDENTITY)private int id;private String name;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

TestModel.java

package com.fei.hibernate.model;import java.util.List;import org.hibernate.Criteria;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.criterion.Order;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;public class TestModel {public static SessionFactory sf=null;@BeforeClasspublic static void beforeClass(){ sf=new Configuration().configure().buildSessionFactory();}@AfterClasspublic static void afterClass(){sf.close();}/** * select * from student order by age asc limit 1,4; */@Testpublic void test01(){Session session = sf.openSession();Criteria criteria = session.createCriteria(Student.class);criteria.addOrder(Order.asc("age"));criteria.setMaxResults(4);criteria.setFirstResult(1);List<Student> students = criteria.list();print(students);session.close();}private void print(List<Student> students){System.out.println("===================================");System.out.println("id\t name\t age\t");for(Student s : students){System.out.println(s.getId()+"\t"+s.getName()+"\t"+s.getAge()+"\t");}}}

运行结果

Hibernate:     select        this_.id as id0_0_,        this_.age as age0_0_,        this_.name as name0_0_     from        student this_     order by        this_.age asc limit ?,        ?===================================id name age5张蕊154蔡琰166西施162貂蝉18

代码下载







 

0 0
原创粉丝点击