EJB---->使用参数查询
命令参数的格式为:“: +参数名”
private String NameQuery(){ //获取指定personid 的人员 Query query = em.createQuery("select p from Person p where p.personid=:Id"); query.setParameter("Id",new Integer(1)); List result = query.getResultList();位置参数的格式为“?+位置编号
@PersistenceContext protected EntityManager em; private String PositionQuery(){ //获取指定personid 的人员 Query query = em.createQuery("select p from Person p where p.personid=?1"); query.setParameter(1,new Integer(1)); List result = query.getResultList();Date 参数
如果你需要传递java.util.Date 或java.util.Calendar 参数进一个参数查询,你需要使用一个特殊的setParameter()
方法,相关的setParameter 方法定义如下:
方法,相关的setParameter 方法定义如下:
public interface Query { //命名参数查询时使用,参数类型为java.util.Date Query setParameter(String name, java.util.Date value, TemporalType temporalType); //命名参数查询时使用,参数类型为java.util.Calendar Query setParameter(String name, Calendar value, TemporalType temporalType); //位置参数查询时使用,参数类型为java.util.Date Query setParameter(int position, Date value, TemporalType temporalType); //位置参数查询时使用,参数类型为java.util.Calendar Query setParameter(int position, Calendar value, TemporalType temporalType); }
上面方法用到的TemporalType 参数定义如下:
package javax.persistence; public enum TemporalType { DATE, //java.sql.Date TIME, //java.sql.Time TIMESTAMP //java.sql.Timestamp }
因为一个Date 或Calendar 对象能够描述一个真实的日期、时间或时间戳.所以我们需要告诉Query 对象怎么使用这些参数,我们把javax.persistence.TemporalType 作为参数传递进setParameter 方法,告诉查询接口在转换java.util.Date 或java.util.Calendar 参数到本地SQL 时使用什么数据库类型。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律