HQL查询实例

来源:互联网 发布:家纺网络推广策划书 编辑:程序博客网 时间:2024/05/21 23:25

由于昨天的UML画的错误,这次又重新画一下,但也不能确定正确。Hibernate的生命周期UML图如下:

HQL查询实例:

测试代码如下:

       /*测试HQL的语句*/

    public void testHql(String keyName,String sex){

       Session session=null;

       List<User> list=null;

       try{

           /*利用写好的工具类得到session对象*/

           session=HibernateUtil.getSession();

           String sql="";

           /*利用名字的关键字进行模糊查询记录*/

           sql="from Useruser where name like :key";

           /*利用session对象创建query对象*/

           Query query=session.createQuery(sql);

           query.setString("key", keyName);

           list=query.list();

           System.out.println("HQL测试一:");

           for(User user:list){

              System.out.println(user.getId()+"\t"+user.getName()+"\t"+user.getSex()

                     +"\t"+user.getEmail()+"\t"+user.getBirthday().toGMTString());

           }

           /*查询与and操作*/

           sql="from Useruser where name like :key and sex=:s";

           query=session.createQuery(sql);

           query.setString("key", keyName);

           query.setString("s", sex);

           list=query.list();

           System.out.println("HQL测试二:");

           for(User user:list){

              System.out.println(user.getId()+"\t"+user.getName()+"\t"+user.getSex()

                     +"\t"+user.getEmail()+"\t"+user.getBirthday().toGMTString());

           }

           /*查询或or操作*/

           sql="from Useruser where name like :key or sex=:s";

           query=session.createQuery(sql);

           query.setString("key", keyName);

           query.setString("s", sex);

           list=query.list();

           System.out.println("HQL测试三:");

           for(User user:list){

              System.out.println(user.getId()+"\t"+user.getName()+"\t"+user.getSex()

                     +"\t"+user.getEmail()+"\t"+user.getBirthday().toGMTString());

           }

       }finally{

           if(session!=null){

              session.close();

           }

       }

    }

如下是关于配置信息的源码

1、 配置文件代码:

<hibernate-configuration>

    <session-factory>

       <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

       <property name="hibernate.connection.url">jdbc:mysql:///crud</property>

       <property name="connection.username">root</property>

       <property name="connection.password">123456</property>

       <!--方言,告诉hibernate是哪一种数据库  -->

       <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

       <property name="hibernate.hbm2ddl.auto">update</property>

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

       <!--告诉hibernate的映射文件在那里-->

       <mapping resource="cn/csdn/domain/User.hbm.xml"/>

</session-factory>

2、 映射文件代码:

<hibernate-mapping

    package="cn.csdn.domain">

 

    <class name="User" table="user">

       <id name="id">

           <generator class="native"/>

       </id>

       <property name="name"/>

       <property name="sex"/>

       <property name="email"/>

       <property name="birthday"/>

    </class>

 

</hibernate-mapping>

3、 实体定义的domian字段如下并实现无参构造函数与无意义的字段id且没有finaly字段

    /*序号id,自动递增*/

    private Integer id;

    private String name;

    private String sex;

    private String email;

    private Date birthday;

    public User() {

       super();

       // TODO Auto-generatedconstructor stub

}

4、  工具类HibernateUtil类的代码:

public final class HibernateUtil {

    private static SessionFactory sessionFactory;

    private HibernateUtil(){

      

    }

    static{

       Configuration cfg=new Configuration();

       cfg.configure();

       sessionFactory=cfg.buildSessionFactory();

    }

    public static SessionFactory getSessionFactory() {

       return sessionFactory;

    }

    public static Session getSession(){

       return sessionFactory.openSession();

    }

}

原创粉丝点击