• 【Hibernate】---Query、Criteria、SQLQuery


    一、核心配置文件

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE hibernate-configuration PUBLIC
     3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
     4         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
     5 <hibernate-configuration>
     6     <session-factory>
     7         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
     8         <property name="hibernate.connection.password">root</property>
     9         <property name="hibernate.connection.url">jdbc:mysql:///test</property>
    10         <property name="hibernate.connection.username">root</property>
    11         
    12         <property name="hibernate.show_sql">true</property>
    13         <property name="hibernate.format_sql">true</property>
    14         <property name="hibernate.hbm2ddl.auto">update</property>
    15         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    16         
    17         <property name="current_session_context_class">thread</property>
    18 
    19         <mapping resource="com/chinasofti/entity/EUser.hbm.xml"/>
    20         
    21     </session-factory>
    22 </hibernate-configuration>

    二、实体类

     1 package com.chinasofti.entity;
     2 
     3 public class EUser {
     4     private int id;
     5     private String username;
     6     private String password;
     7 
     8     public int getId() {
     9         return id;
    10     }
    11     public void setId(int id) {
    12         this.id = id;
    13     }
    14     public String getUsername() {
    15         return username;
    16     }
    17     public void setUsername(String username) {
    18         this.username = username;
    19     }
    20     public String getPassword() {
    21         return password;
    22     }
    23     public void setPassword(String password) {
    24         this.password = password;
    25     }
    26     @Override
    27     public String toString() {
    28         return "EUser [id=" + id + ", username=" + username + ", password="
    29                 + password + "]";
    30     }
    31     
    32 }

    三、映射文件

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     4 <!-- Generated 2017-8-10 10:27:23 by Hibernate Tools 3.4.0.CR1 -->
     5 <hibernate-mapping>
     6     <class name="com.chinasofti.entity.EUser" table="EUSER">
     7         <id name="id" type="int">
     8             <column name="ID" />
     9             <generator class="native" />
    10         </id>
    11         <property name="username" type="java.lang.String">
    12             <column name="USERNAME" />
    13         </property>
    14         <property name="password" type="java.lang.String">
    15             <column name="PASSWORD" />
    16         </property>
    17     </class>
    18 </hibernate-mapping>

    四、封装类

     1 package com.chinasofti.entity;
     2 import org.hibernate.Session;
     3 import org.hibernate.SessionFactory;
     4 import org.hibernate.cfg.Configuration;
     5 
     6 public class HibernateUtil {
     7     static Configuration CONFIGURATION = null;
     8     static SessionFactory SESSION_FACTORY = null;
     9     static Session SESSION = null;
    10     static{
    11         CONFIGURATION = new Configuration();
    12         CONFIGURATION.configure();
    13         SESSION_FACTORY = CONFIGURATION.buildSessionFactory();
    14         SESSION    = SESSION_FACTORY.openSession();
    15     }
    16     public static SessionFactory getSessionFactory(){
    17         return SESSION_FACTORY;
    18     }
    19     public static Session openSession(){
    20         return SESSION;
    21     }
    22 }

    五、测试类

     1 package com.chinasofti.test;
     2 
     3 import java.util.List;
     4 
     5 import org.hibernate.Criteria;
     6 import org.hibernate.Query;
     7 import org.hibernate.SQLQuery;
     8 import org.hibernate.Session;
     9 import org.hibernate.Transaction;
    10 import org.junit.Test;
    11 
    12 import com.chinasofti.entity.EUser;
    13 import com.chinasofti.entity.HibernateUtil;
    14 
    15 public class TestHibernateTestQuery {
    16 
    17     @Test
    18     public void TestQuery(){
    19         Session session = HibernateUtil.openSession();
    20         Query query = session.createQuery("from EUser");
    21         List<EUser> list = query.list();
    22         for (EUser eUser : list) {
    23             System.out.println(eUser.getUsername());
    24         }
    25     }
    26 
    27     
    28     @Test
    29     public void TestCriteriaQuery(){
    30         Session session = HibernateUtil.openSession();
    31         Criteria criteria = session.createCriteria(EUser.class);
    32         List<EUser> list = criteria.list();
    33         for (EUser eUser : list) {
    34             System.out.println(eUser.getUsername());
    35         }
    36     }
    37     @Test
    38     public void TestSqlQuery(){
    39         Session session = HibernateUtil.openSession();
    40         //创建SQLQuery对象
    41         SQLQuery sQLQuery = session.createSQLQuery("select * from euser");
    42         //添加一个实体类
    43         sQLQuery.addEntity(EUser.class);
    44         List<EUser> list = sQLQuery.list();
    45         for (EUser eUsers : list) {
    46             System.out.println(eUsers.getUsername());
    47         }
    48     }
    49     
    50     
    51     @Test
    52     public void testRollback(){
    53         Session session=null;
    54         //注意:先查询再修改
    55         Transaction transaction=null;
    56         try {
    57             session = HibernateUtil.openSession();
    58             transaction = session.beginTransaction();
    59             EUser user = session.get(EUser.class, 4);
    60             //给user对象设置新的值
    61             user.setUsername("滚回来");
    62             session.save(user);
    63             System.out.println(10/0);
    64             transaction.commit();
    65             //注意:mysql和oracle数据不一样,如果这里操作的是oracle,这里数据就不会变。因为mysql是自动提交的(默认)
    66         } catch (Exception e) {
    67             // TODO Auto-generated catch block
    68             transaction.rollback();
    69         }finally{
    70             session.close();
    71         }
    72     }
    73 
    74     
    75 }

    之前Hibernate API的使用(Query、Criteria、SQLQuery对象) 没有附代码    今天补上

  • 相关阅读:
    实现多项式相加或相减
    Node.js对28181的管理
    mssql版本对应的版本号
    Asp.net移除Server, XPoweredBy, 和XAspNetVersion头
    开源的图表控制,winform
    .NET 4.0里异常处理的新机制
    asp.net windows 域账号登录
    SpringCloud2.0 Zuul 网关路由 基础教程(十)
    SpringCloud2.0 Hystrix Dashboard 断路器指标看板 基础教程(八)
    SpringCloud2.0 Turbine 断路器集群监控 基础教程(九)
  • 原文地址:https://www.cnblogs.com/angelye/p/7464810.html
Copyright © 2020-2023  润新知