java在Hibernate中使用limit,hibernatelimit,package cn.o
分享于 点击 15134 次 点评:27
java在Hibernate中使用limit,hibernatelimit,package cn.o
package cn.outofmemory.snippets.enterprise;import java.util.Date;import java.util.List;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class SetLimitInHibernateQueryResult { @SuppressWarnings("unchecked") public static void main(String[] args) { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.getCurrentSession(); try { session.beginTransaction(); for (int i = 0; i < 20; i++) { Employee employee = new Employee(); employee.setName("employe_"+i); employee.setSurname("surname_"+i); employee.setTitle("QA Engineer_"+i); employee.setCreated(new Date()); session.save(employee); } session.getTransaction().commit(); } catch (HibernateException e) { e.printStackTrace(); session.getTransaction().rollback(); } session = sessionFactory.getCurrentSession(); try { session.beginTransaction(); Query query = session.createQuery("from Employee"); query.setMaxResults(10); List<Employee> employees = (List<Employee>) query.list(); if (employees!=null) { System.out.println("Total Results:" + employees.size()); for (Employee employee : employees) { System.out.println(employee.getId() + " - " + employee.getName()); } } session.getTransaction().commit(); } catch (HibernateException e) { e.printStackTrace(); session.getTransaction().rollback(); } }}
hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <!-- JDBC connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/companydb</property> <property name="connection.username">jcg</property> <property name="connection.password">jcg</property> <!-- JDBC connection pool, use Hibernate internal connection pool --> <property name="connection.pool_size">5</property> <!-- Defines the SQL dialect used in Hiberante's application --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Display and format all executed SQL to stdout --> <property name="show_sql">true</property> <property name="format_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">update</property> <!-- Mapping to hibernate mapping files --> <mapping resource="Employee.hbm.xml" /> </session-factory></hibernate-configuration>
Employee.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name="cn.outofmemory.snippets.enterprise.Employee" table="employee"> <id name="id" column="id"> <generator class="native"/> </id> <property name="name" not-null="true" length="50" /> <property name="surname" not-null="true" length="50" /> <property name="title" length="50" /> <property name="created" type="timestamp" /> </class></hibernate-mapping>
CREATE TABLE `companydb`.`employee` ( `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR(45) NOT NULL, `surname` VARCHAR(45) NOT NULL, `title` VARCHAR(45) NOT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`));
输出:
Total Results:1044 - employe_045 - employe_146 - employe_247 - employe_348 - employe_449 - employe_550 - employe_651 - employe_752 - employe_853 - employe_9
用户点评