JPA的一些坑
2024-09-06 17:19:31
推荐一篇比较好的介绍JPA的文章:使用 Spring Data JPA 简化 JPA 开发
JPA坑1:不支持Limit查询
JPA是不支持Limit分页查询,而我们有时又因为某些原因不想用JPA提供的分页功能,或者他提供的分页功能还不能满足我们特定的需求,那么就需要自定义我们的查询,方法如下:
-
/**
-
*
-
* ClassName: ADTemplateDaoSpecific <br/>
-
* Reason: TODO 该接口为模板的CRUD操作的自定义特制接口. <br/>
-
* date: 2015年7月6日 上午10:12:43 <br/>
-
*
-
* @author whc
-
* @version 1.0
-
* @since JDK 1.8
-
*/
-
interface ADTemplateDaoSpecific{
-
/**
-
*
-
* findAllByPageNum:根据分页查询模板资料. <br/>
-
*
-
* @author whc
-
* @param start
-
* @param end
-
* @return
-
* @since JDK 1.8
-
*/
-
public List<ADTemplate> findAllThroughPageNum(int start,int end) ;
-
}
-
/**
-
*
-
* ClassName: ADTemplateDaoSpecificImpl <br/>
-
* Reason: TODO 模板的CRUD操作的自定义特制接口的实现类. <br/>
-
* date: 2015年7月9日 下午3:53:43 <br/>
-
*
-
* @author whc
-
* @version 1.0
-
* @since JDK 1.8
-
*/
-
@Repository
-
class ADTemplateDaoImpl implements ADTemplateDaoSpecific{
-
-
@PersistenceContext
-
private EntityManager entityManager;
-
/**
-
* TODO 分页查询.
-
* Ps:JPA不支持limit关键字
-
* @see com.iot.fileDownLoad.dao.ADTemplateDaoSpecific#findAllByPageNum(int, int)
-
*/
-
public List<ADTemplate> findAllThroughPageNum(int start, int end) {
-
StringBuffer sql = new StringBuffer("from ADTemplate where isDelete = '0'");
-
-
javax.persistence.Query query = entityManager.createQuery(sql.toString());
-
-
query.setFirstResult(start);
-
query.setMaxResults(end);
-
return query.getResultList();
-
}
-
}
注意,此时需要使用@PersistentContext注解注入EntityManager。然后在实现类中我们就可以利用它来实现分页。
JPA坑2:函数的命名必须规范
可以知道,JPA的原理主要是靠函数的命名。所以就要求我们的DAO层函数名字十分的规范,注意点有2:
一是:命名的驼峰法则,如 userInfo , myCar 这样等。
二是:命名的时候注意有Byxxx,其中这个xxx最好是该实体的属性,比如说
public List<TemplatePath> getTemplatePathByTemplateId(@Param("id")int id);
这样的名字就可以知道是根据id来查询。
最新文章
- C#/JS 获取二维数组组合
- plsql客户端显示菜单等
- 字符串反转(StringBuffer)
- Java集合的小抄
- 读书笔记_Effective_C++_条款二十三:宁以non-member、non-friend替换member函数
- java Socket使用注意
- JQ 事件
- JavaScript学习笔记2-数组对象
- 【百度地图API】关于如何进行城市切换的三种方式
- Sublime text3 设置的中文翻译
- IOS微信点击input弹出输入法,关闭后页面留白解决方案
- ORACLE存储过程定时器例子(存储过程变量赋值)
- 报错:The import android.support cannot be resolved
- SpringBoot系列之三_一个完整的MVC案例
- LeetCode(123):买卖股票的最佳时机 III
- pgm终
- 死锁与递归锁 信号量 event 线程queue
- css一般性
- 关于android SDK安装Failed to fetch URL 一点思考
- c++ 算法 栅格中两点之间连线