`

Hibernate数据库查询

 
阅读更多

数据库查询排序 常用

Team.java

package com.fgh.hibernate;

import java.util.HashMap;
import java.util.Map;

public class Team {

	private String id;

	private String name;

	private Map students = new HashMap();

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Map getStudents() {
		return students;
	}

	public void setStudents(Map students) {
		this.students = students;
	}
}
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">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

	<session-factory>
		<property name="connection.url">
			jdbc:mysql://localhost:3306/hibernate
		</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>

		<property name="show_sql">true</property>

		<mapping resource="Team.hbm.xml" />

	</session-factory>

</hibernate-configuration>

Team.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="com.fgh.hibernate.Team" table="team_map">

		<id name="id" column="id" type="string">
			<generator class="uuid"></generator>
		</id>

		<property name="name" column="name" type="string"></property>
		
		<!-- order-by 指按数据库排序 属性值是数据库中的字段名 不是属性名 默认是按升序排序-->
		<map name="students" table="student_map" order-by="name desc">
			<key column="team_id"></key>
			<index column="name" type="java.lang.String"></index><!-- 指定的是map中的key -->
			<element column="value" type="java.lang.String"></element><!-- 指定的是map中的value -->
		</map>
	</class>
</hibernate-mapping>

建表类:CreateTable.java

package com.fgh.hibernate;

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class CreateTable {
	public static void main(String[] args) {
		SchemaExport export = new SchemaExport(new Configuration().configure());
		export.create(true, true);
	}
}

测试类:

InsertTest.java

package com.fgh.hibernate;

import java.util.Collection;
import java.util.Iterator;
import java.util.Map;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class InsertTest {

	private static SessionFactory sessionFactory;

	static {
		try {
			sessionFactory = new Configuration().configure()
					.buildSessionFactory();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		Session session = sessionFactory.openSession();
		Transaction tx = null;

		try {
			// 保存操作
			// Team team = new Team();
			// team.setName("team1");
			//
			// HashMap map = (HashMap) team.getStudents();
			// map.put("aa", "zhangsan");
			// map.put("bb", "lisi");
			// map.put("ccc", "wangwu");

			tx = session.beginTransaction();
			// 查询操作 这里使用uniqueResult()方法返回一个唯一的对象
			// 而不是返回list 方便 Team 和 name 都是指类里面的属性
			Team team = (Team) session.createQuery(
					"from Team t where t.name = 'team1'").uniqueResult();
			Map map = team.getStudents();
			Collection collection = map.values();
			Iterator iterator = collection.iterator();
			while (iterator.hasNext()) {
				System.out.println(iterator.next());
			}
			tx.commit();
		} catch (Exception e) {
			e.printStackTrace();
			if (null != tx) {
				tx.rollback();
			}
		} finally {
			session.close();
		}
	}
}

后台打印sql:

Hibernate: select team0_.id as id0_, team0_.name as name0_ from team_map team0_ where team0_.name='team1'
Hibernate: select students0_.team_id as team1_0_, students0_.value as value0_, students0_.name as name0_ from student_map students0_ where students0_.team_id=? order by students0_.name desc
wangwu
lisi
zhangsan


分享到:
评论

相关推荐

    hibernate数据库访问接口设计

    总结,Hibernate 数据库访问接口设计涵盖了从基础的数据库连接、对象持久化到高级的查询语言、缓存机制等多个方面。熟练掌握这些接口和概念,能极大地提升Java开发者的数据库操作能力。在实际项目中,应根据需求选择...

    hibernate分页查询 数据库连接

    本篇将深入探讨Hibernate中的分页查询功能以及它如何处理数据库连接,帮助你更有效地管理大数据量的查询操作。 首先,我们来看一下什么是分页查询。在Web应用中,当用户需要浏览大量数据时,一次性加载所有数据不仅...

    hibernate数据库相关操作步骤

    **hibernate数据库相关操作步骤** Hibernate是一款强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用中操作数据库的简便方法。通过使用Hibernate,开发人员可以避免直接编写SQL语句,而是通过面向...

    hibernate动态数据库进化版

    【hibernate动态数据库进化版】是一个关于Java持久层框架Hibernate深入学习的主题,它主要探讨了如何在实际项目中让Hibernate更加灵活地适应不同的数据库环境,实现动态的SQL生成和执行。这一进化的版本旨在提高开发...

    Hibernate 配置各种数据库

    Hibernate 配置各种数据库 Hibernate 是一个基于 Java 的持久层框架,提供了一个抽象的数据访问层,能够与多种数据库进行集成。在 Hibernate 的配置文件中,我们可以配置不同的数据库连接,包括驱动程序、URL 等...

    Hibernate数据库操作实例.zip

    标题"Hibernate数据库操作实例.zip"表明这是一个关于使用Hibernate框架进行数据库操作的实际案例。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发人员使用面向对象的方式来处理数据库交互,而无需...

    Hibernate影院查询系统数据库Cinema

    北大青鸟ACCP6.0Hibernate影院信息查询系统数据库

    Hibernate 多数据库支持解决方案

    Hibernate是一个强大的Java持久化框架,它允许开发者将对象模型与关系数据库进行映射,从而简化了数据库操作。在处理多数据库支持时,Hibernate提供了一些策略和技巧来确保应用程序能够在不同类型的数据库之间灵活...

    hibernate数据库PPT制作

    hibernate数据库PPT制作

    精通hibernate数据库编程

    【精通Hibernate数据库编程】是针对初学者设计的学习资源,旨在帮助快速掌握Hibernate这一强大的Java对象关系映射(ORM)框架。Hibernate是Java开发中的一个重要工具,它简化了数据库操作,使得开发者可以更专注于...

    hibernate 数据库操作方法

    通过熟练掌握Hibernate的各种查询方式以及与Spring的集成,开发者可以更加高效地进行数据库操作,提升应用性能,同时保持代码的清晰和可维护性。在实际开发中,要根据项目需求选择合适的查询方式,并遵循最佳实践,...

    hibernate连接金仓数据库所需jar包集合lib.7z

    1. Hibernate核心库:`hibernate-core.jar` - 包含了Hibernate的核心API,包括实体管理、会话工厂、查询语言等。 2. JPA规范实现:`hibernate-entitymanager.jar` - 提供了对Java Persistence API (JPA) 的支持,使...

    hibernate数据库连接

    【标题】:“Hibernate数据库连接”深入解析 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了与数据库的交互。本篇文章将深入探讨Hibernate的数据库连接机制,帮助开发者理解如何利用...

    hibernate数据库连接池

    hibernate数据库连接池配置。使用非常方便,参考数据库连接池配置

    hibernate+struts实现数据库查询的例子

    这个“hibernate+struts实现数据库查询的例子”是针对初学者的一个实践教程,旨在展示如何整合这两个框架来实现数据库的查询操作。下面将详细介绍这两个框架及其整合使用的方式。 `Hibernate`是Java平台上的一款...

    测试Hibernate数据库ch03.sql

    测试Hibernate数据库ch03.sql

    达梦数据库hibernate方言包

    达梦数据库各版本的hibernate方言包,包含版本 DmDialect-for-hibernate2.0、DmDialect-for-hibernate2.1、DmDialect-for-hibernate3.0、DmDialect-for-hibernate3.1、DmDialect-for-hibernate3.6、DmDialect-for-...

    hibernate中所有数据库方言

    在探讨Hibernate中所有数据库方言之前,我们先简要回顾一下Hibernate框架本身。Hibernate是一个开源的对象关系映射(ORM)框架,用于Java应用与各种关系型数据库进行交互。它提供了强大的功能,如对象持久化、查询...

    封装好的hibernate数据库操作(增,删,改,查,分页)

    对hibernate的数据库操作封装: 1.分页查询 2.保存对象 3.保存对象组 4. 更新对象 5.更新对象组 6.保存或更新对象 7.保存或更新对象组 8. 删除对象 9. 删除对象组 10.删除对象(此类的所有对象) 11.删除(HQL) 12....

Global site tag (gtag.js) - Google Analytics