hibernate之crud&hql&分页

package com.eudask.ht1;

import java.util.Date;

public class Stu {
    private Integer id;
    private String xm;
    private String sex;
    private Date sr;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getXm() {
        return xm;
    }
    public void setXm(String xm) {
        this.xm = xm;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Date getSr() {
        return sr;
    }
    public void setSr(Date sr) {
        this.sr = sr;
    }
    @Override
    public String toString() {
        return "Stu [id=" + id + ", xm=" + xm + ", sex=" + sex + ", sr=" + sr
                + "]";
    }

}

Stu.java

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping
    package="com.eudask.ht1">

    <class name="com.eudask.ht1.Stu" table="stu">
        <id name="id">
            <generator class="native"></generator>
        </id>
        <property name="xm"  column="xm"/>
        <property name="sex" type="java.lang.String" column="sex"/>
        <property name="sr" type="java.util.Date" column="sr"/>

    </class>

</hibernate-mapping>

Stu.hbm.xml

package com.eudask.ht1.test;

import java.sql.Date;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;

import com.eudask.ht1.Stu;
import com.eudask.ht1.util.HibernateUtil;

public class TestSt {

    @Test
    public void addStu() {
        Stu stu = new Stu();
        stu.setXm("郭德纲2");
        stu.setSex("男2");
        stu.setSr(Date.valueOf("2016-10-21"));

        // 获取session
        Session session = HibernateUtil.getSession();
        // 开启事务
        Transaction ts = session.beginTransaction();
        try {
            session.save(stu);
            ts.commit();
        } catch (Exception e) {
            e.printStackTrace();
            ts.rollback();
        } finally {
            session.close();
        }
    }
    @Test
    public void testCritetoa(){
        // 获取session
        Session session = HibernateUtil.getSession();
        Criteria cr=session.createCriteria(Stu.class);
        cr.add(Restrictions.eq("id",1));
        List<Stu> Stus=cr.list();
        for(Stu stu:Stus){
            System.out.print(stu);
        }
        session.close();

    }

    @Test
    public void testSql(){
        // 获取session
        Session session = HibernateUtil.getSession();
        String sql="select * from stu";
        SQLQuery SQ=session.createSQLQuery(sql);
        List<Object[]> Stus=SQ.list();
        for(Object[] stu:Stus){
            for(Object stuo:stu){
                System.out.println(stuo);
            }
        }
        session.close();

    }

    // 根据id查询数据
        @Test
        public void findById() {
            Session session = HibernateUtil.getSession();
            Stu stu = (Stu) session.get(Stu.class, 1);
            System.out.println(stu.getId());
            System.out.println(stu.getSex());
            System.out.println(stu.getXm());
            System.out.println(stu.getSr());
            session.close();
        }

        // 修改数据
        @Test
        public void update() {
            Session session = HibernateUtil.getSession();
            Stu stu = (Stu) session.get(Stu.class, 1);
            // 开启事务
            Transaction ts = session.beginTransaction();
            try {
                stu.setXm("岳云鹏");
                session.update(stu);
                ts.commit();
            } catch (Exception e) {
                e.printStackTrace();
                ts.rollback();
            } finally {
                session.close();
            }
        }

        // 查询所有
        @Test
        public void selectAll() {
            //获得HibernateSession对象
            Session session = HibernateUtil.getSession();
            //编写HQL语句
            String hql = "from Stu where id=:input";
//            String hql = "from Stu as s where id=?";
            //以hql语句做为参数调用session的createQuery创建Query对象
            Query query = session.createQuery(hql);
            //如果有参数通过query.setXX()方法 设置查询条件
            query.setInteger("input", 1);
//            query.setInteger(0, 1);
            //通过query的list等方法遍历查询结果
            List<Stu> stus = query.list();
            for (Stu s : stus) {
                System.out.println(s);
            }
            session.close();
        }

        // 删除
        @Test
        public void delete() {
            Session session = HibernateUtil.getSession();
            Stu stu = (Stu) session.get(Stu.class, 2);
            Transaction ts = session.beginTransaction();
            try {
                session.delete(stu);
                ts.commit();
            } catch (Exception e) {
                e.printStackTrace();
                ts.rollback();
            } finally {
                session.close();
            }
        }

        //分页of hibernate
        public void fenye(int page,int pageItems){
            Session session = HibernateUtil.getSession();
            String hql="from Stu";
            Query query=session.createQuery(hql);
            query.setFirstResult((page-1)*pageItems);
            query.setMaxResults(pageItems);
            List<Stu> list=query.list();
            for(Stu stu:list){
                System.out.println(stu);
            }

        }

        public static void main(String[] args) {
            TestSt t=new TestSt();
            t.fenye(1, 10);
            System.out.println("=======================");
            t.fenye(2, 10);
        }
}

TestSt.java

package com.eudask.ht1.util;

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

public class HibernateUtil {
    private static SessionFactory sessionFactory;
    static{
        //加载hibernate主配置文件
//        Configuration confg=new Configuration().configure();
        Configuration confg=new Configuration();
        confg.configure();
        sessionFactory=confg.buildSessionFactory();
    }

    //创建session
    public static Session getSession(){
        return sessionFactory.openSession();
    }

}

HibernateUtil.java

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory name="foo">
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="connection.url">jdbc:mysql:///hibernate_20120328</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.username">root</property>
        <property name="hibernate.connection.password">hyy</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">false</property>
        <!--
            create:先删除,再创建
            update:如果表不存在就创建,不一样就更新,一样就什么都不做。
            create-drop:初始化时创建表,SessionFactory执行close()时删除表。
            validate:验证表结构是否一致,如果不一致,就抛异常。
         -->
        <property name="hbm2ddl.auto">update</property>
        <!--
            设置默认的事务隔离级别:
            隔离级别        对应的整数表示
            READ UNCOMMITED    1
            READ COMMITED    2
            REPEATABLE READ    4
            SERIALIZEABLE    8
         -->
        <property name="connection.isolation">2</property>
    <mapping resource="com/eudask/ht1/Stu.hbm.xml" />
    <mapping resource="com/eudask/ht1/Tea.hbm.xml"/>
    <mapping resource="com/eudask/ht1/Qiang.hbm.xml"/>

</session-factory>
</hibernate-configuration>

hibernate.cfg.xml

时间: 2024-09-30 10:45:34

hibernate之crud&hql&分页的相关文章

Hibernate的CRUD重用性

1.在研究了hibernate框架之后,准备完成一套Hibernate的CRUD操作,并且让其具有高度的重用性.在复杂查询方面,hibernate可谓是各种不方便,因此查询方面,利用java反射做出一套根据对象属性来动态查询数据的小框架. 2.先做出可行的设计图 3.具体的实现过程 1 package com.framework.common.dao; 2 3 import test.framework.common.PageEntity; 4 5 import java.util.List;

Hibernate查询方式---HQL方式

这一种我最常用,也是最喜欢用的,因为它写起来灵活直观,而且与所熟悉的SQL的语法差不太多.条件查询.分页查询.连接查询.嵌套查询,写起来与SQL语法基本一致,唯一不同的就是把表名换成了类或者对象.其它的,包括一些查询函数(count(),sum()等).查询条件的设定等,全都跟SQL语法一样.###注意:     在hql中关键字不区分大小写,但是属性和类名区分大小写示例1: static void query(String name){ Session s=null; try{ s=Hiber

hibernate的CRUD操作

本文简单总结一下hibernate的具有映射关系CRUD操作,主要使用到了cascade和fetch,其中cascade针对的是CUD操作,表示级联关系,fetch针对的是R操作,表示级联加载方式. 1.先看下javaEE的API中关于cascade的描述 javax.persistence Enum CascadeType java.lang.Object java.lang.Enum<CascadeType> javax.persistence.CascadeType All Implem

Hibernate 的查询语言 HQL 与高级查询

Hibernate  的查询语言 HQL  与高级查询 数据库操作实现类的开发 import java.util.List; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.Transaction; import org.sf.dao.IDepartmentDao; import org.sf.entity.Departmen

通用Hibernate DAO类(包括分页)

package com.jronline.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibern

【Hibernate步步为营】--hql查询小介

HQL 是指Hibernate Query Language,它是Hibernate的查询语言,拥有一套自己的查询机制,它的查询语句和SQL非常类似.在使用的时候可以非常快上手.HQL提供了基本上SQL全部的查询功能,可是在使用HQL查询时有非常多地方须要注意.该篇文章整理了HQL查询过程中须要注意的一些主要的语法问题,在使用HQL查询时希望避免这些问题. 一.Hibernate简单介绍 HQL採用的是标准化对象查询.它是以对象的方式进行查询.将查询语句封装为对象操作.长处:可读性好.复合jav

hibernate和struts2实现分页功能

1.DAO层接口的设计,定义一个PersonDAO接口,里面声明了两个方法: public interface PersonDAO { public List<Person> queryByPage(String hql, int offset, int pageSize); public int getAllRowCount(String hql); } 2.DAO层接口的实现类PersonDAOImpl类,将其两个方法实现出来: public class PersonDAOImpl imp

Hibernate检索方式-HQL(7)

Hibernate 提供了以下几种检索对象的方式 (1)导航对象图检索方式:  根据已经加载的对象导航到其他对象 (2)OID 检索方式:  按照对象的 OID 来检索对象 (3)HQL 检索方式: 使用面向对象的 HQL 查询语言 (4)QBC 检索方式: 使用 QBC(Query By Criteria) API 来检索对象. 这种 API 封装了基于字符串形式的查询语句, 提供了更加面向对象的查询接口. (5)本地 SQL 检索方式: 使用本地数据库的 SQL 查询语句 HQL(Hiber

ORM利器:NHibernate(三)五部曲+简单对象CRUD+HQL

前面的两篇文章中,我们对NHibernate已经做了大致了解 <ORM利器:NHibernate(一)简介>Nhibernate的作用:解决了对象和数据库的转化问题 <ORM利器:NHibernate(二)使用CodeSmith快速生成映射文件和映射类>利用CodeSmith由表导出映射类(就是通常所说的Entity)和映射文件(告诉你表和对象之间是如何建立一一对应的关系的). 接下来将会对NHibernate的使用做Demo解析,分为五部曲: 创建表.若要把对象转换为数据库中的表