前置:事务实战
HqlDemo.java
package demo.hibernate;
import jakarta.persistence.EntityManager;import jakarta.persistence.EntityManagerFactory;import jakarta.persistence.TypedQuery;
import java.util.List;
public class HqlDemo { public static void main(String[] args) { EntityManagerFactory emf = Jpa.createEntityManagerFactory(); EntityManager em = emf.createEntityManager(); try { TypedQuery<User> byName = em.createQuery( "select u from User u where u.userName like :kw order by u.id", User.class); byName.setParameter("kw", "%li%"); List<User> list = byName.getResultList(); System.out.println("like %li% :"); list.forEach(System.out::println);
Long count = em.createQuery("select count(u) from User u where u.status = 1", Long.class) .getSingleResult(); System.out.println("active users count=" + count); } finally { em.close(); emf.close(); } }}运行
mvn -q exec:java -Dexec.mainClass=demo.hibernate.HqlDemoJPQL 查的是实体 User 与属性 userName,Hibernate 会翻译成 user.user_name 列上的 SQL。
对比 MyBatis(手写 SQL)与 MyBatis-Plus CRUD(BaseMapper 生成单表 SQL)。