• 常用方法
    • 查询

String hql = "from User";

  1. 条件查询

替换占位符 ?

String hql = "from User where userId < ? and userName = ?";

替换占位符 :

string hql = "from User where userId < :aaa and userName = :bbb";

query.setParameter("aaa", 100);

query.setParameter("bbb", "李四");

  1. 模糊查询

String hql = "from User where userName like ?";

  1. uniqueResult() 查询一条数据

String hql = "from User where userId = ?";

User user = (User) query.uniqueResult();

  1. 查询总条数

String hql = "select count(*) from User ";

总条数接受必须使用Long

Long countItem = (Long)query.uniqueResult();

  1. 投影查询

先创建相对应的构造函数

语法:select new User(userName,userAge) form 对象

  1. 分页查询

其中注意两点:

setFirstResult(x) 指定从第 x 条开始查询,索引的位置为从0开始 ;

setMaxResults (y) 每页显示 y 条数据 ;

测试删除

String hql = "delete from User where userId = ?";

query.executeUpdate();

测试修改

String hql = "update User set userName = ? where userId = ?";

query.executeUpdate();

​​​​​​​关联关系

在领域模型中, 类与类之间最普遍的关系就是关联关系.

分为 :一对一,一对多,多对一,多对一

  1. ​​​​​​​场景

以 Customer 和 Order 为例: 一个用户能发出多个订单, 而一个订单只能属于一个客户. 从 Order 到 Customer 的关联是多对一关联; 而从 Customer 到 Order 是一对多关联

实体Customer和Order

public class Customer {

 

private Integer  custId;

private String custName;

private Integer custSex;

private Set<Order> orders =new HashSet<Order>();

}

public class Order {

 

private Integer orderId;

private String orderName;

private Customer customer;

}

          1. 一对多

<class name="com.mr.hibernate.pojo.Customer" table="T_CUSTOMER">

        <id name="custId" type="java.lang.Integer">

            <column name="CUST_ID" />

            <generator class="native" />

        </id>

        <property name="custName" type="java.lang.String">

            <column name="CUST_NAME" />

        </property>

        <property name="custSex" type="java.lang.Integer">

            <column name="CUST_SEX" />

        </property>

        <set name="orders"  cascade="save-update,delete">

            <key>

                <column name="CUST_ID" />

            </key>

            <one-to-many class="com.mr.hibernate.pojo.Order" />

        </set>

    </class>

  • <set> 元素来映射持久化类的 set 类型的属性
    • name: 设定待映射的持久化类的属性的
  • <key> 元素设定与所关联的持久化类对应的表的外键
    • column: 指定关联表的外键名
  • <one-to-many> 元素设定集合属性中所关联的持久化类
    • class: 指定关联的持久化类的类名
      1. 多对一

<class name="com.mr.hibernate.pojo.Order" table="T_ORDER">

        <id name="orderId" type="java.lang.Integer">

            <column name="ORDER_ID" />

            <generator class="native" />

        </id>

        <property name="orderName" type="java.lang.String">

            <column name="ORDER_NAME" />

        </property>

        

        <many-to-one name="customer" column="CUST_ID" class="com.mr.hibernate.pojo.Customer" cascade="save-update,delete"></many-to-one>

    </class>

  • <many-to-one> 元素来映射组成关系
    • name: 设定待映射的持久化类的属性的名字
    • column: 设定和持久化类的属性对应的表的外键
    • class:设定待映射的持久化类的属性的类型
      1. 级联关系

cascade 属性, 它用于指定如何操纵与当前对象关联的其他对象.

hibernate常用方法

​​​​​​​

相关文章:

  • 2021-06-29
  • 2021-10-09
  • 2022-12-23
  • 2021-08-26
  • 2022-12-23
  • 2021-12-12
  • 2022-12-23
  • 2021-10-28
猜你喜欢
  • 2022-01-18
  • 2022-03-01
  • 2022-12-23
  • 2021-11-20
  • 2022-12-23
  • 2022-12-23
  • 2021-10-30
相关资源
相似解决方案