关于Spring Data Jpa 自定义方法实现问题

网友投稿 766 2022-11-16

关于Spring Data Jpa 自定义方法实现问题

关于Spring Data Jpa 自定义方法实现问题

目录Spring Data Jpa 自定义方法的实现自己的接口主接口我新建一个类来实现我自己的接口Spring Data Jpa自定义方法关键字

Spring Data Jpa 自定义方法的实现

最近项目中用到了Spring Data JPA,在里面我继承了一个PagingAndSortingRepository的接口,期望的是利用Spring Data JPA提供的便利。

同时我也希望自己有一个能定义自己方法的接口,因为单纯靠Spring Data JPA中提供的功能还是有很多业务逻辑实现不了,我必须自己实现。

那么问题来了:Spring Data JPA好处就是让我们省去了实现接口的过程,按照他们给的命名规范他们会自动实现我们的业务逻辑,那我们自己实现的接口要怎么注入到其中呢?

上网查找了好多资料,都没有说的太详细,更多的是照搬胡抄,这里是我亲自写的,可能很多人会用到,不多说上代码

自己的接口

package com.mhc.dao;

import org.springframework.stereotype.Repository;

import com.mhc.entity.Person;

@Repository

public interface DeviceCategoryDaoCustom {

public Person getsFather(Person person);

}

主接口

public interface DeviceCategoryDao extends

PagingAndSortingRepository, DeviceCategoryDaoCustom {

}

上面是我的接口继承PagingAndSortingRepository、DeviceCategoryDaoCustom(我自己方法的接口)。

我新建一个类来实现我自己的接口

package com.mhc.dao;

import javax.persistence.PersistenceContext;

import javax.transaction.Transactional;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.repository.CrudRepository;

import org.springframework.data.repository.NoRepositoryBean;

import org.springframework.stereotype.Component;

import org.springframework.stereotype.Repository;

import org.springframework.stereotype.Service;

import com.mhc.entity.Person;

@Repository("crudRepositoryDaoCustom")

class DeviceCategoryDaoImpl implements DeviceCategoryDaoCustom {

@Transactional

public Person getsFather(Person person) {

// TODO Auto-generated method stub

Person father = new Person();

father = person.getParentPerson();

return father;

}

}

在这里有个需要注意的地方,就是用不用implements的问题,如果用的话,他就会调用编译器的实现功能去实现我们自定义的接口也就是:DevicecategoryCustom。

如果去掉的话,他会去实现DeviceCategoryDao,那么会有人问,他怎么去自己找的呢。

事实上他是根据后面的Impl来寻找的。他不会提示@override,不过你写相同的方法他还是会覆盖(覆盖主接口中的同名方法,如果有的话)DeviceCategoryDao中的同名方法。你可以去尝试一下。

同时加上@Repository把他加入到Bean里面,这样下次用这个方法的时候RepoWZRokkcKWsitory会自动找到他的(话说Spring团队真心NB)。然后我们交给spring托管、测试。。。。。Ok 真心赞

Spring Data Jpa自定义方法关键字

关键字

方法名举例

对应的SQL

And

findByNameAndAge

where name = ? and age = ?

Or

findByNameOrAge

where name = ? or age = ?

Is

findByNameIs

where name = ?

Equals

findByNameEquals

where name = ?

Between

findByAgeBetween

where age between ? and ?

WZRokkcKW

LessThan

findByAgeLessThan

where age < ?

LessThanEquals

findByAgeLessThanEqual

where age <= ?

GreatorThan

findByAgeGreaterThan

where age > ?

GreatorThanEquals

http:// findByAgeGreaterThanEqual

where age >= ?

After

findByAgeAfter

where age > ?

Before

findByAgeBefore

where age < ?

IsNull

findByNameIsNull

where name is null

IsNotNull,NotNull

findByNameIsNotNull,findByNameNotNull

where name is not null

Not

findByNameNot

where name <>?

In

findByAgeIn

where age in (?)

NotIn

findByAgeNotIn

where age not in (?)

NotLike

findByNameNotLike

where name not like ?

Like

findByNameLike

where name like ?

StartingWith

findByNameStartingWith

where name like ‘?%'

EndingWith

findByNameEndingWith

where name like ‘%?'

Containing,Contains

findByNameContaining,findByNameContains

where name like ‘%?%'

OrderBy

findByOrderByAgeDesc

order by age desc

True

findByBossTrue

where boss = true

False

findByBossFalse

where boss = false

IgnoreCase

findByNameIgnoreCase

where UPPER(name) = UPPER(?)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:流程管理工具snakemake学习笔记杂记02
下一篇:zabbix使用技巧
相关文章

 发表评论

暂时没有评论,来抢沙发吧~