zoukankan      html  css  js  c++  java
  • Hibernate执行访问步骤及增删改查

    配置文件是hibernate的灵魂,上篇较为简单地写了下配置文件,以后会修改。现在写我们比较关心的如何使用Hibernate进行增删改查.

    1. 创建org.hibernate.Query(接口)

    Query接口是An object-oriented representation of a Hibernate query. A Query instance is obtained by calling Session.createQuery(String queryString)。Session.createQuery返回的是SQLQuery,它继承Query,代表的是原生SQL语句生成的Query。

    2. 设置Query,对查询的执行进行某些方面的设置。

    Query Query.setXXX()系列,对SQL语句中的条件进行设置,可以通过条件的位置或名字进行设值。条件的形式应为where id = :idValue。而且setXXX(name,value)中的name应为idValue,没有冒号。

    SQLQuery SQLQuery.addEntity()系列,指定查询结果的组装类;SQLQuery.addScalar()系列,指出要查询的字段。

    3. 执行

    int Query.executeUpdate(): Execute the update or delete statement.

    List list(): 执行查询,Return the query results as a List. If the query contains multiple results pre row, the results are returned in an instance of Object[].

    查询举例

    		Session session = HibernateHelper.getSessionFactory().openSession();
    		Transaction transaction = session.beginTransaction();
    		//1.创建、设置条件、指定封装类、执行
    		Query query=session.createSQLQuery("select * from customer where id= :idVal")
    			.addEntity(Customer.class);
    		query.setInteger("idVal", 1);//设置查询条件
    		List result = query.list();
    		for(Object aRe:result){
    			Customer customer=(Customer) aRe;
    			System.out.println(customer.getName());
    		}
    		transaction.commit();
    		session.close();
    		/*2.addScalar的使用。读取部分字段 
    		 * SQLQuery.addScalar(String)-把一个字段加入到结果中, SQLQuery的list(),list的每个元素代表一行数据。
    		 * 若查询结果只有一个字段,元素是一个Object类;
    		 * 如查询结果有两个以上字段,元素就是一个Object[],数组大小=字段个数 
    		 * */
    		List result = session.createSQLQuery("select * from customer")
    			.addScalar("name")
    			.addScalar("id")
    			.list();
    		for(Object aRe:result){
    			Object[] aRow=(Object[])aRe;
    			System.out.println(aRow[0]+"|"+aRow[1]);
    		}

    更新举例

    //此处顺带演示了setXXX(int position,value)系列方法的使用
    Query query=session.createSQLQuery("update customer set name = 'testUpdate' where id = ?");
    query.setInteger(0, 1);//参数为(int position,val)
    int i=query.executeUpdate();


    Hibernate执行持久层访问步骤:

    1.创建Configuration实例;2.创建SessionFactory实例;3.创建Session实例;4.打开事务;5.持久化访问;6.提交事务;7.若有异常,回滚;8.关闭session


  • 相关阅读:
    【leetcode】1630. Arithmetic Subarrays
    【leetcode】1629. Slowest Key
    【leetcode】1624. Largest Substring Between Two Equal Characters
    【leetcode】1620. Coordinate With Maximum Network Quality
    【leetcode】1619. Mean of Array After Removing Some Elements
    【leetcode】1609. Even Odd Tree
    【leetcode】1608. Special Array With X Elements Greater Than or Equal X
    【leetcode】1603. Design Parking System
    【leetcode】1598. Crawler Log Folder
    Java基础加强总结(三)——代理(Proxy)Java实现Ip代理池
  • 原文地址:https://www.cnblogs.com/whuqin/p/4982093.html
Copyright © 2011-2022 走看看