Hibernate查询示例
来源:互联网 发布:java中的hashcode 编辑:程序博客网 时间:2024/06/04 19:18
1.db.sql
- drop database sun;
- create database sun;
- use sun;
- drop table CUSTOMERS;
- create table CUSTOMERS (
- ID int primary key,
- NAME varchar(15),
- AGE int
- );
- drop table ORDERS;
- create table ORDERS (
- ID int primary key,
- ORDER_NUMBER varchar(15),
- PRICE DECIMAL(10,2),
- CUSTOMER_ID int,
- foreign key (CUSTOMER_ID) references CUSTOMERS(ID)
- );
- insert into CUSTOMERS(ID,NAME,AGE) values(1,'Tom',21);
- insert into CUSTOMERS(ID,NAME,AGE) values(2,'Mike',24);
- insert into CUSTOMERS(ID,NAME,AGE) values(3,'Jack',30);
- insert into CUSTOMERS(ID,NAME,AGE) values(4,'Linda',25);
- insert into CUSTOMERS(ID,NAME,AGE) values(5,'Tom',25);
- insert into ORDERS(ID,ORDER_NUMBER,PRICE,CUSTOMER_ID) values(1,'Tom_Order001',100,1);
- insert into ORDERS(ID,ORDER_NUMBER,PRICE,CUSTOMER_ID) values(2,'Tom_Order002',200,1);
- insert into ORDERS(ID,ORDER_NUMBER,PRICE,CUSTOMER_ID) values(3,'Tom_Order003',300,1);
- insert into ORDERS(ID,ORDER_NUMBER,PRICE,CUSTOMER_ID) values(4,'Mike_Order001',100,2);
- insert into ORDERS(ID,ORDER_NUMBER,PRICE,CUSTOMER_ID) values(5,'Jack_Order001',200,3);
- insert into ORDERS(ID,ORDER_NUMBER,PRICE,CUSTOMER_ID) values(6,'Linda_Order001',100,4);
- insert into ORDERS(ID,ORDER_NUMBER,PRICE,CUSTOMER_ID) values(7,'UnknownOrder',200,null);
2.搭建开发环境
使用的是Hibernate3.2
- <?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>
- <!-- 最大连接数 -->
- <property name="c3p0.max_size">10</property>
- <!-- 最小连接数 -->
- <property name="c3p0.min_size">3</property>
- <!-- 超时时间 单位 秒-->
- <property name="c3p0.timeout">300</property>
- <!-- 被缓存的PreparedStatement实例的最大数目 -->
- <property name="c3p0.max_statements">5</property>
- <!-- 连接的URL -->
- <property name="connection.url">jdbc:mysql://localhost:3306/sun</property>
- <!-- 用户名 -->
- <property name="connection.username">root</property>
- <!-- 密码 -->
- <property name="connection.password">root</property>
- <!-- 驱动-->
- <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
- <!-- 数据库方言 -->
- <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
- <!-- 显示SQL语句 -->
- <property name="show_sql">true</property>
- <!-- 格式化SQL语句 -->
- <property name="format_sql">true</property>
- <!-- 映射文件的地址 -->
- <mapping resource="org/cdl/domain/Customers.hbm.xml" />
- <mapping resource="org/cdl/domain/Orders.hbm.xml" />
- </session-factory>
- </hibernate-configuration>
3.HibernateUtil(Hibernate工具类)
- package org.cdl.util;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.cfg.Configuration;
- public class HibernateUtil {
- /**
- * 初始化hibernate.cfg.xml文件
- */
- private static SessionFactory sf = null;
- static {
- Configuration cfg = new Configuration().configure();
- sf = cfg.buildSessionFactory();
- }
- /**
- * 获取Session对象
- * @return 获取到的Session对象
- */
- public static Session getSession() {
- return sf.openSession();
- }
- /**
- * 关闭Session对象
- * @param session 要关闭的Session对象
- */
- public static void closeSession(Session session) {
- if (session != null) {
- session.close();
- }
- }
- }
4.测试代码
- package org.cdl.test;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Set;
- import org.cdl.domain.Customers;
- import org.cdl.domain.Orders;
- import org.cdl.util.HibernateUtil;
- import org.hibernate.Criteria;
- import org.hibernate.Query;
- import org.hibernate.SQLQuery;
- import org.hibernate.Session;
- import org.hibernate.criterion.Example;
- import org.hibernate.criterion.Restrictions;
- public class Demo01 {
- public static void main(String[] args) {
- /**
- * HQL
- */
- String hql="from Customers as c where c.name=? and c.age=?";
- Object []params={"Tom",21};
- show(findByHQL(hql,params));
- /**
- * QBC
- */
- show(findByQBC());
- /**
- * QBE
- */
- show(findByQBE());
- /**
- * SQL
- */
- String sql="select * from customers where name like ? and age=?";
- Object[] values={"Tom",21};
- show(findBySQL(sql, values));
- }
- //HQL检索方式
- public static List findByHQL(String hql,Object[]params){
- Session session=HibernateUtil.getSession();
- Query query=session.createQuery(hql);
- if(params!=null){
- for(int i=0;i<params.length;i++){
- query.setParameter(i, params[i]);
- }
- }
- //HibernateUtil.closeSession(session);
- return query.list();
- }
- //QBC的检索方式
- public static List findByQBC(){
- Session session=HibernateUtil.getSession();
- Criteria c=session.createCriteria(Customers.class);
- c.add(Restrictions.like("name","T%"));
- c.add(Restrictions.eq("age", 21));
- //HibernateUtil.closeSession(session);
- return c.list();
- }
- //QBE的检索方式
- public static List findByQBE(){
- Session session=HibernateUtil.getSession();
- Criteria c=session.createCriteria(Customers.class);
- Customers entity=new Customers();
- entity.setAge(21);
- entity.setName("Tom");
- c.add(Example.create(entity));
- //HibernateUtil.closeSession(session);
- return c.list();
- }
- //本地SQL
- public static List findBySQL(String sql,Object[]params){
- Session session=HibernateUtil.getSession();
- SQLQuery query=session.createSQLQuery(sql);
- query.addEntity(Customers.class);
- if(params!=null){
- for(int i=0;i<params.length;i++){
- query.setParameter(i, params[i]);
- }
- }
- //HibernateUtil.closeSession(session);
- return query.list();
- }
- //遍历结果集
- public static void show(List list){
- if(list.size()>0){
- Iterator it=list.iterator();
- while(it.hasNext()){
- Customers c=(Customers)it.next();
- System.out.println(c.getId()+" "+c.getName()+" "+c.getAge());
- if(c.getOrderses().size()>0){
- Set set=c.getOrderses();
- Iterator it2=set.iterator();
- while(it2.hasNext()){
- Orders o=(Orders)it2.next();
- System.out.println("...."+o.getId()+" "+o.getOrderNumber()+" "+o.getPrice());
- }
- }
- }
- }
- }
- }
附:
0 0
- Hibernate查询示例
- hibernate查询指定字段示例
- Hibernate 多表关联查询示例
- hibernate里使用JDBC查询示例代码
- Hibernate 多表关联查询示例
- Hibernate 多表关联查询示例
- Hibernate框架中Criteria的示例查询问题
- Hibernate OID、导航图、HQL、SQL、QBC查询方式示例
- 【Hibernate示例】
- Hibernate示例
- Hibernate示例
- Hibernate示例
- Hibernate示例
- Hibernate示例
- Hibernate示例
- Hibernate示例
- hibernate查询
- Hibernate 查询
- 让view有弹性效果
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——前言
- 汇总遇到的面试题
- Linux命令注意事项
- 【金阳光测试】基于控件核心技术探讨---Android自动化系列(2)---2013年5月
- Hibernate查询示例
- 64位系统装plsql,oracle(ora-12154:无法解析指定的连接标识符)
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——配置过程(一)
- IOS录像文件预览
- 利用duplicity与金山快盘 for UbuntuKylin 实现文件云备份
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——配置过程(二)
- C++ string类
- CloudFoundry中buildpack引见与自定义实践
- 黑马程序员----交通灯管理系统