JPA、Hibernate Orm (一)

本文详细介绍了Spring JPA和Hibernate的注解使用,涵盖基本条件查询、高级查询方法,以及save、update等操作。重点讲解了如何通过注解实现复杂查询和对象映射,同时解答了常见问题,适合初学者和进阶者参考。
部署运行你感兴趣的模型镜像

两个可用的练习项目:
hibernate jpa练习项目git
spring data : jpa练习项目

一、注解
二、spring jpa

A Guide to JPA with Spring

1. 基本条件查询
  • 模糊查询
	@Query("from MyUser u where u.name like CONCAT('%',:name,'%')")
	List<MyUser> likeName(@Param("name") String name);
  • Is,Equals
	@Query("from MyUser u where u.name=:name")
	MyUser findMyUser(@Param("name") String name);

	@Query("from MyUser u where u.hobbyList is empty")
	List<MyUser> NoHobbyUser();
  • Between
	@Query("from MyUser u where u.age between :min and :max")
	public List<MyUser> findAllcs(@Param("min") Integer min,@Param("max") Integer max);
  • LessThan
  • LessThanEqual
  • GreaterThan
  • GreaterThanEqual
  • After
  • Before
  • IsNull
  • IsNotNull,NotNull
  • Like
  • NotLike
  • StartingWith
  • EndingWith
  • Containing
  • OrderBy
  • Not
  • In
  • NotIn
  • IgnoreCase
2、高级查询
  • 查询结果创建新对象接收,需存在对应的构造方法
SELECT NEW Employee(e.name, e.salary) ...
  • MEMBER OF运算符和NOT MEMBER OF
查找directs中的Professor列表
SELECT e FROM Professor e WHERE e MEMBER OF e.directs
  • 查询结果 A对象映射到B对象
  TypedQuery<Professor> query = em.createQuery("SELECT e FROM Employee e",
        Professor.class);
    List<Professor> emps = query.getResultList();
  • SIZE函数,查询有2个学生的学校
List l = em.createQuery(
        "SELECT d FROM School d WHERE SIZE(d.students) = 2")
        .getResultList();
  • 多对一,查询部门的员工
List l = em.createQuery("SELECT d.employees FROM Department d")
        .getResultList();
三、Hibernate的save、persist、update、merge和saveOrUpdate

推荐用:persist新增, merge更新

四、常见问题集
1、查询的
使用hql有两种方式,其一:
String hql = "select color,font from css";
Query query = session.createQuery(hql);
List<Object[]> links = query.list();
以上方式能直接拿到结果
其二:spring jpa,考虑直接用List<Object> 作为返回结果

您可能感兴趣的与本文相关的镜像

AutoGPT

AutoGPT

AI应用

AutoGPT于2023年3月30日由游戏公司Significant Gravitas Ltd.的创始人Toran Bruce Richards发布,AutoGPT是一个AI agent(智能体),也是开源的应用程序,结合了GPT-4和GPT-3.5技术,给定自然语言的目标,它将尝试通过将其分解成子任务,并在自动循环中使用互联网和其他工具来实现这一目标

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值