zoukankan      html  css  js  c++  java
  • Hibernate学习笔记

    HQL 注意事项:

    1.请把以前sql中的表名换成类名,把字段名换成属性名。注意我不是说HQL里的类名都是表名。类名>表名

    2.这里就看一个select 类的例子,一便说明一下多态

    person是man和woman的父类吧,在HQL中可以这样写:

    from Person p

    这就表示查出所有人了。

    3.当然sql中的select from where group by having order by这些,HQL也是支持的了。

    4.取一条记录query.uniqueResult()

    5.取多个记录query.list()

    6.分页。在执行查询之前

    query.setFirstResult(0)

    query.setMaxResult(2)

    注意在这里的0是开始下标。2是从开始下标的一页的记录数

    7.绑定参数

    ?---------------------query.setString(1)

    :name---------------query.setString(name,"jiaxiao")

    :entity---------------query.setEntity(entity,jnew Person())

    8.内连接

    from Company c inner join c.employees e;

    相当于select c.*,e.* from company c, c.employees e where c.id=e.compid(+)

    返回的是一个object[]

    还可以级联

    from A a left join a.b b leftc join b.c c

    隐式查询:

    from Province p where p.City.name="guanyuan";

    此外还有子查询,组函数等

    from Company c where 1< ( select count(*) from c.employees e);

    投影查询:

    select new 包名.类名(e.name,c.name) from company c left join c.employee e

    这个类为一个普通的POJO只有 e.name,c.name两个属性

    集合过滤

    select c from Company c left join Employee e

    sess.createFilter(c.getEmployee(),"where e.name='xx'");

    条件查询

    Java代码 复制代码
    1. //条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数      
    2.         String hql = "from Users where name=? and passwd=?";      
    3.         Query query = session.createQuery(hql);      
    4.         //第1种方式      
    5. //      query.setString(0, "name1");      
    6. //      query.setString(1, "password1");      
    7.         //第2种方式      
    8.         query.setParameter(0"name1",Hibernate.STRING);      
    9.         query.setParameter(1"password1",Hibernate.STRING);      
    10.         List<Users> list = query.list();      
    11.         for(Users users : list){      
    12.             System.out.println(users.getId());      
    13.         }     

             

    Java代码 复制代码
    1. //条件查询,自定义索引名(参数名):username,:password.通过setString,setParameter设置参数      
    2.         String hql = "from Users where name=:username and passwd=:password";      
    3.         Query query = session.createQuery(hql);      
    4.         //第1种方式      
    5. //      query.setString("username", "name1");      
    6. //      query.setString("password", "password1");      
    7.         //第2种方式,第3个参数确定类型      
    8.         query.setParameter("username""name1",Hibernate.STRING);      
    9.         query.setParameter("password""password1",Hibernate.STRING);      
    10.         List<Users> list = query.list();      
    11.         for(Users users : list){      
    12.             System.out.println(users.getId());      
    13.         }    



     

    Java代码 复制代码
    1. //条件查询,通过setProperties设置参数      
    2.         String hql = "from Users where name=:username and passwd=:password";      
    3.         Query query = session.createQuery(hql);      
    4.         //MyUser类的2个属性必须和:username和:password对应      
    5.         MyUser myUser = new MyUser("name1","password1");      
    6.         query.setProperties(myUser);      
    7.         List<Users> list = query.list();      
    8.         for(Users users : list){      
    9.             System.out.println(users.getId());      
    10.         }    
    Code

    Hibernate中持久化类的对象可以划分为三种状态,分别是瞬态,持久态,脱管态。

     

    1.       瞬态(Transient),也叫临时态。处于这种状态的对象具备的特征如下:

    a)         不在Session的缓存中,不与任何的Session实例相关联。

    b)        在数据库中没有与之相对应的记录。

    2.       持久态(Persistent),处于这种状态的对象具备的特征如下:

    a)         Session的缓存中,与Session实例相关联。

    b)        在数据库中存在与之相对应的记录。

    3.       脱管态(Detached),也叫游离态。处于这种状态的对象具备的特征如下:

    a)         不在Session的缓存中,不与任何的Session实例相关联。

    b)        在数据库中存在与之相对应的记录。(前提条件是没有其他Session实例删除该条记录)

  • 相关阅读:
    第六章类(十一)构造函数4对象初始化器和集合初始化器
    第六章类(十)构造函数3new
    第六章类(九)构造函数2默认构造函数
    Javascript---- 练习八(字符串操作)
    图解CSS3----white-space空白符处理
    图解CSS3----word-break单词断行
    图解CSS3----word-wrap(单词换行)
    图解CSS3----text-overflow(文本溢出属性)
    图解CSS3----vertical-align(文本垂直对齐方式)
    Javascript---- 练习五(函数,事件绑定)
  • 原文地址:https://www.cnblogs.com/yaksea/p/1380383.html
Copyright © 2011-2022 走看看