hibernate HQL语句

HQL语句的几种处理情况
建立持久化类

public class Book {
	
	private Integer book_id;
	private String book_name;
	private Set<Category> categories = new HashSet<>();
	
	public Book() {
		
	}

	public Integer getBook_id() {
		return book_id;
	}

	public void setBook_id(Integer book_id) {
		this.book_id = book_id;
	}

	public String getBook_name() {
		return book_name;
	}

	public void setBook_name(String book_name) {
		this.book_name = book_name;
	}

	public Set<Category> getCategories() {
		return categories;
	}

	public void setCategories(Set<Category> categories) {
		this.categories = categories;
	}

	@Override
	public String toString() {
		return "Book [book_id=" + book_id + ", book_name=" + book_name + ", categories=" + categories
				+ ", getBook_id()=" + getBook_id() + ", getBook_name()=" + getBook_name() + ", getCategories()="
				+ getCategories() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()="
				+ super.toString() + "]";
	}
	
	

}

建立持久化映射文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-11-28 16:44:57 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
    <class name="com.zking.five.hibernate.Book" table="BOOK">
        <id name="book_id" type="java.lang.Integer">
            <column name="BOOK_ID" />
            <generator class="assigned" />
        </id>
        <property name="book_name" type="java.lang.String">
            <column name="BOOK_NAME" />
        </property>
        <set name="categories" table="CATEGORY" inverse="false" lazy="true">
            <key>
                <column name="BOOK_ID" />
            </key>
            <one-to-many class="com.zking.five.hibernate.Category" />
        </set>
    </class>
</hibernate-mapping>

建立配置文件

<session-factory>
     <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    
     <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
    
     <property name="connection.username">root</property>
     
     <property name="connection.password">1920</property>
     
     <!-- 属性方言 -->
     <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
     
     <property name="show_sql">true</property>
     
     <property name="format_sql">true</property>
     
     <property name="hbm2ddl.auto">update</property>
     <!-- 本地事务(jdbc)getCurrentSession -->
     <property name="hibernate.current_session_context_class">thread</property>
     <!-- 全局事务 (jta)-->
   <!--   <property name="hibernate.current_session_context_class">jta</property> -->
     <!-- 引入实体类的映射文件 -->
     <!--书本实体类-->
    <mapping resource="com/zking/five/hibernate/Book.hbm.xml"/>
    </session-factory>

Junit测试

  1. 返回对象(包括单个对象)
public class TestHql {
	private Session session;
	private Transaction transaction;

	@Before
	public void setUp() {
		session = HibernateUtil.getSessionFactory().openSession();
		transaction = session.beginTransaction();
	}

	/**
	 * hibernate hql语句几种处理情况 返回单个对象
	 */
	@Test
	public void test1() {
		String hql = "from Book where book_id=1";
		Query query = session.createQuery(hql);
		Object singleResult = query.getSingleResult();
		//com.zking.five.hibernate.Book
		System.out.println(singleResult.getClass().getName());
		//Book [book_id=1, book_name=西游记, categories=[com.zking.five.hibernate.Category@57f8951a, com.zking.five.hibernate.Category@531ec978], getBook_id()=1, getBook_name()=西游记, getCategories()=[com.zking.five.hibernate.Category@57f8951a, com.zking.five.hibernate.Category@531ec978], getClass()=class com.zking.five.hibernate.Book, hashCode()=817994751, toString()=com.zking.five.hibernate.Book@30c19bff]
		System.out.println(singleResult);

	}

	/**
	 * hibernate hql语句几种处理情况 返回对象
	 */
	@Test
	public void test2() {
		String hql = "from Book";
		Query query = session.createQuery(hql);
		List list = query.list();
		for (Object object : list) {
			com.zking.five.hibernate.Book
			System.out.println(object.getClass().getName());
			System.out.println(object);
		}

	}



	
	@After
	public void tearDown() {
		transaction.commit();
		session.close();
	}

}
  1. 返回字符串
/**
	 * hibernate hql语句几种处理情况 返回字符串
	 */
	@Test
	public void test3() {
		String hql = "select book_name from Book where book_id=1";
		Query query = session.createQuery(hql);
		Object singleResult = query.getSingleResult();
		// java.lang.String
		System.out.println(singleResult.getClass().getName());
		// 西游记
		System.out.println(singleResult);
	}
  1. 返回数组
/**
	 * hibernate hql语句几种处理情况 返回数组
	 */
	@Test
	public void test4() {
		String hql = "select book_name,book_id from Book where book_id=1";
		Query query = session.createQuery(hql);
		Object singleResult = query.getSingleResult();
		// [Ljava.lang.Object;
		System.out.println(singleResult.getClass().getName());
		// [西游记, 1]
		System.out.println(Arrays.toString((Object[]) singleResult));
	}

  1. 命名参数
	/**
	 * hql 命名参数
	 */
	@Test
	public void test6() {
		Book book = new Book();
		String hql = "select * from Book where book_id like :id and book_name like :name";
		Query query = session.createQuery(hql);
	    query.setParameter("id", book.getBook_id());
	    query.setParameter("name", book.getBook_name());
	    List list = query.list();
	    for (Object object : list) {
			System.out.println(object.getClass().getName());
			System.out.println(object);
		}
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值