Hibernate 插入,修改,删除,查询语句

/*
*具体操作hibernate的类
*增加,删除,修改,按ID查询,模糊查询,查询全部
**/
public class PersonOperate {
//在hibernate中所有操作都是由Session完成
public Session session = null;  

//在构造方法中实例化Session对象
public PersonOperate(){
    //找出hibernate的配置
    Configuration config = new Configuration().configure();
    //从配置中取出SessionFactory
    SessionFactory sf = config.buildSessionFactory();
    //从SessionFactory中取出Session
    this.session = sf.openSession();
}  

//操作Hibernate类的所有操作都是通过Session完成的  

//增加数据库中数据
public void insert(Person person){
    //开始事务
    Transaction tran =    session.beginTransaction();
    //执行语句
    session.save(person);
    //提交事务
    tran.commit();
    session.close();
}  

//操作Hibernate类更改数据库中的数据
public void update(Person person){
    //开始事务
    Transaction tran =    session.beginTransaction();
    //执行语句
    session.update(person);
    //提交事务
    tran.commit();
}  

/*操作Hibernate类:按ID查询
    *我们插入,修改都是对对象进行操作
    *那么我们查询的时候也应该是返回一个对象
    **/
public Person queryById(String id){
    System.out.println(id);
    Person person = null;
    //hibernate查询语句
    String hql = "FROM Person as p WHERE p.id = ?";
    Query q = session.createQuery(hql);
    q.setString(0, id);
    List list = q.list();
    Iterator iteator = list.iterator();
    if(iteator.hasNext()){
     person = (Person)iteator.next();
    }
    return person;
}  

/*操作Hibernate类:删除数据库中数据
    *hiberante2,hibernate3中通用的删除方法
    *缺点:删除数据之前要先查询一次数据,找出删除的数据对象
    *性能低下
    **/
public void delete(Person person){
    //开始事务
    Transaction tran =    session.beginTransaction();
    //执行语句
    session.delete(person);
    //提交事务
    tran.commit();
}  

//hibernate3的用法
public void delete(String id){
    //开始事务
    Transaction tran =    session.beginTransaction();
    String hql = "DELETE Person WHERE id = ?";  

    Query q = session.createQuery(hql);
    q.setString(0, id);
    //执行更新语句
    q.executeUpdate();
    //提交事务
    tran.commit();
}  

//操作Hibernate类:查询全部数据
public List queryAll(){
    List list = null;
    String hql = "FROM Person as p ";
    Query q = session.createQuery(hql);
    list = q.list();
    return list;
}  

//操作Hibernate类:模糊查询
public List queryByLike(String colnum,String value){
    List list = null;
    String hql = "FROM Person as p WHERE p."+ colnum +" like ?";
    Query q = session.createQuery(hql);
    q.setString(0, "%"+ value +"%");
    list = q.list();  
Criteria criteria = session.createCriteria(Customer.class);
Criterion c1 = Expression.like("name", "T%");
Criterion c2 = Exception.eq("age", new Long(21));
criteria.add(c1);
criteria.add(c2);
List list = criteria.list();
以上语句相当于:
    List list = session..createCriteria(Customer.class)
                .add(Expression.like("name", "T%"))
                .add(Exception.eq("age", new Long(21)))
                .list();

查询
List <User> user = session.createCriteria(User.class)
                        //必需创建一个别名,roles为user中包 含的role 的list.
                        .createAlias("roles","roles")
                        //roleId为传进来进行查询的角色ID
                        .add(Restrictions.eq("roles.id",roleId))
                        .list();

转载地址:http://blog.csdn.net/hxmcGu/article/details/2581986

时间: 2024-10-17 20:34:45

Hibernate 插入,修改,删除,查询语句的相关文章

Hibernate 关于执行sql查询语句(转)

原文  http://www.yshjava.cn/post/543.html 主题 SQLHibernate Hibernate对原生SQL查询的支持和控制是通过SQLQuery接口实现的.通过Session接口,我们能够很方便的创建一个SQLQuery(SQLQuery是一个接口,在Hibernate4.2.2之前,默认返回的是SQLQuery的实现类--SQLQueryImpl对象,在下文中出现的SQLQuery如非注明,都是指该子类)对象来进行原生SQL查询: session.creat

Hibernate学习之hql查询语句

*  页面上数据的字段和数据库中字段差不多,这个时候,采用迫切连接  结构比较好,如果页面上的字段很少,要按照需求加载数据,采用带构造函数的select查询 实例讲解:转自:http://www.cnblogs.com/xiaoluo501395377/p/3376256.html 在这里通过定义了三个类,Special.Classroom.Student来做测试,Special与Classroom是一对多,Classroom与Student是一对多的关系,这里仅仅贴出这三个bean的属性代码:

ado.net c#基本的增加,修改,删除,查询

自己初次学习用的,各种不规范,注释没写 class AdoDemo { static string strConn = @"Data Source=server1;Initial Catalog=NameCard;Integrated Security=False;User ID=sa;Password=******;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False"; static void Main(stri

单片机调试 - 如何简单有效的插入和删除调试语句

#ifdef __debug #define debug(format,...) printf("File: "__FILE__", Line: %05d-------->"format"/n", __LINE__, ##__VA_ARGS__) #else #define debug(format,...) #endif 说明: 1.编译器支持不定参数的宏定义,' ## '的意思是,如果可变参数被忽略或为空,将使预处理器( preproc

通用删除查询语句存储过程

ALTER PROCEDURE [dbo].[sp_deletetable] @tablename nvarchar(100), @condition nvarchar(500) AS BEGIN DECLARE @Sql nvarchar(800) SET @Sql='delete from '[email protected]+' '[email protected] --PRINT @Sql EXEC(@Sql) END 通用查询语句存储过程 ALTER PROCEDURE [dbo].[

Xamarin.Android 入门实例(4)之实现对 SQLLite 进行添加/修改/删除/查询操作

1.Main.axml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent"

JPA查询语句(转载)

JPQL就是一种查询语言,具有与SQL 相类似的特征,JPQL是完全面向对象的,具备继承.多态和关联等特性,和hibernate HQL很相似. 查询语句的参数 JPQL语句支持两种方式的参数定义方式: 命名参数和位置参数..在同一个查询语句中只允许使用一种参数定义方式. 命令参数的格式为:“: +参数名” 例: Query query = em.createQuery("select p from Person p where p.personid=:Id"); query.setP

13.hibernate的native sql查询(转自xiaoluo501395377)

hibernate的native sql查询 在我们的hibernate中,除了我们常用的HQL查询以外,还非常好的支持了原生的SQL查询,那么我们既然使用了hibernate,为什么不都采用hibernate推荐的HQL查询语句呢?这是因为HQL查询语句虽然方便我们查询,但是基于HQL的查询会将查询出来的对象保存到hibernate的缓存当中,如果在我们的一个大型项目中(数据量超过了百万级),这个时候如果使用hibernate的HQL查询的话,会一次将我们查询的对象查询出来后放到缓存中,这个时

Hibernate笔记——11.HQL查询

HQL是Hibernate的面向对象的查询语句.使用HQL,首先要得到session对象,然后编写HQL,以HQL语句为参数调用session的createQuery方法创建查询对象.如果HQL包含参数,则调用Query的set方法为参数赋值.调用Query对象的list或者uniqueResult方法返回查询结果列表(持久化实体集).