博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
让spring-data-jpa解放你的DAO
阅读量:6704 次
发布时间:2019-06-25

本文共 1494 字,大约阅读时间需要 4 分钟。

hot3.png

第一次写oschina空间。先试试水,写得有点乱,改天再整理下。

最近项目用Spring-data-jpa,确实很方便。如果你也曾经被重复无聊的dao代码雷到的话,就可以考虑将ORM framework换成spring-data-jpa了。 只要继承CrudRepository或者PagingAndSortingRepository,dao层基本上就只剩下定义接口方法这么一件事情了,连实现都不用写,因为默认实现SimpleJpaRepository已经帮你实现了基本的CRUD,是不是很方便?基本的CRUD就全解决了。

废话少说,上代码:

@NoRepositoryBeanpublic interface BaseRepository
extends CrudRepository
{ }@Transationalpublic interface TestRepository extends BaseRepository
{ Test findByName(String name);}

只需这么定义,然后testRepository对象就天然拥有CRUD的方法,它会动态将findByName()的方法定义翻译成适当的HQL。

@Transationalpublic class TestServiceImpl{ @Autowried private TestRepository testRepository; public void test(){ testRepository.findOne(id); testRepository.findAll(ids); testRepository.delete(id); testRepository.findByName(name); }}

各种翻译规则可细看。

而且还可以用@Query的注解。在方法中写JPQL查询语句,还支持nativeQuery,可以使用原生SQL,对报表之类对性能要求比较高的查询就很给力了。

如果有时候只是想查询实体中的某几个字段,而不是整张表都查询出来,可以采用以下方法

@Transactionalpublic interface TestRepository extends BaseRepository
{ @Query("select t.id, t.name from Test t") public List
findSimpleTest()}

然后在调用该repository的service中遍历将对应的字段转换为相应的字段即可。

具体可以看

如果SimpleJpaRepository中的方法不够用,扩展起来也非常方便,只要在BaseRepository定义自己的借口方法,然后实现类继承SimpleJpaRepository实现自己的方法,然后将jpa的factory-class替换成自己写的实现类即可。

当然spring data jpa也有criteria实现,叫Specification,有自己的语法,就一个接口方法,多表关联复杂条件查询很多时候就需要用到这个,还没细研究。再议。

转载于:https://my.oschina.net/pengzai/blog/129116

你可能感兴趣的文章
大话 char、varchar、 nchar、nvarchar之间"剪不断理还乱"的关系
查看>>
系统数据库
查看>>
JAVA: java产生随机数的几种方式
查看>>
调试发现的小错误
查看>>
c#中使用NetCDF存储二维数据的读写操作简单应用
查看>>
移动终端处理器构成和基带芯片概述
查看>>
Android 动态加载 (一) 态加载机制 案例一
查看>>
Oracle存储过程中异步调用的实际操作步骤
查看>>
Atitti.java android反编译解决方案-----虚拟机方案
查看>>
Java 装饰模式 (Decorator)
查看>>
JAVA虚拟机垃圾回收算法原理
查看>>
PHP开启curl_init
查看>>
动态规划法求背包问题
查看>>
【maven + hibernate(注解) +spring +springMVC】 使用maven搭建项目
查看>>
Mybatis-mapper-xml-基础
查看>>
如何在Visual Studio VS中定义多项目模板
查看>>
tcpip学习
查看>>
yii2权限控制rbac之菜单menu最详细教程
查看>>
国内四大炒股软件APP 全面技术解析
查看>>
C++ STL--queue 的使用方法
查看>>