基于JPQL实现纯SQL语句方法详解
JPQL全称Java Persistence Query Language。
基于首次在EJB2.0中引入的EJB查询语言(EJB QL),Java持久化查询语言(JPQL)是一种可移植的查询语言,旨在以面向对象表达式语言的表达式,将SQL语法和简单查询语义绑定在一起·使用这种语言编写的查询是可移植的,可以被编译成所有主流数据库服务器上的SQL。
其特征与原生SQL语句类似,并且完全面向对象,通过类名和属性访问,而不是表名和表的属性。
使用JPQL,需要把SQL语句修改成类似HQL 语句。SQL 查询的是数据库,而JPQL 查询的是对象和属性,在语法上是有些不同的。对于有些用JPQL 无法写出来的查询,还是使用原生SQL写出来方便
以下给出一个例子,注意语法的区别:
JPQL查询
@PersistenceContext protected EntityManager em; public List<Video> findVideoList1() { String hql = "from Video order by id desc"; Query query = em.createQuery(hql); List<Video> result = query.getResultList(); em.clear(); return result; }
SQL查询
查询最近7天的数据
public List<Video> findVideoList2() { List<Video> result = (List<Video>) em.createNativeQuery ("select * from db_video where date_sub(curdate(), interval 6 day) <= date(date) order by date desc", Video.class) .getResultList(); return result; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
mysql 主从数据不一致,提示: Slave_SQL_Running: No 的解决方法
这篇文章主要介绍了mysql 主从数据不一致,提示: Slave_SQL_Running: No 的解决方法,总结分析了MySQL主从数据不一致的原因与常见处理技巧,需要的朋友可以参考下2020-02-02CentOS7.2虚拟机上安装MySQL 5.6.32的教程
这篇文章主要介绍了CentOS7.2虚拟机上安装MySQL 5.6.32的教程的相关资料,需要的朋友可以参考下2016-08-08详解Ubuntu Server下启动/停止/重启MySQL数据库的三种方式
本篇文章主要介绍了buntu Server下启动/停止/重启MySQL数据库的三种方式,具有一定的参考价值,有兴趣的可以了解一下。2017-01-01MySQL多线程复制遇到Error_code: 1872的解决方案
本文给大家分享的是在使用mysql主从复制的时候遇到Error_code: 1872错误的解决方法,非常的简单,有需要的小伙伴可以参考下2016-09-09SQL中distinct去重关键字使用和count统计组合使用方法
这篇文章主要给大家介绍了关于SQL中distinct去重关键字使用和count统计组合使用的相关资料,count()是SQL中提供的用于统计记录数量的函数,需要的朋友可以参考下2024-08-08MySQL性能优化配置参数之thread_cache和table_cache详解
这篇文章主要介绍了MySQL性能优化配置参数之thread_cache和table_cache详解,THREAD_CACHE是Mysql的连接池,table_cache指定表高速缓存的大小,需要的朋友可以参考下2014-07-07
最新评论