免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
spring data jpa 定義全局接口BaseDao

好,現(xiàn)在我要搭一個項目,我想定義一個BaseDao,然后直接讓其他模塊的dao直接繼承我這個BaseDao,BaseDao有通用的方法也有spring data jpa提供的便捷方法

那就新建一個BaseDao唄,這個BaseDao應(yīng)該是繼承JpaRepository,JpaSpecificationExecutor因為我們想用spring data jpa,然后你再定義自己一些常用方法,例如myMethod

@NoRepositoryBeanpublic interface BaseDao<T,ID extends Serializable> extends JpaRepository<T, ID>,JpaSpecificationExecutor<T> {    void myMethod();}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

接下來應(yīng)該就是實現(xiàn)了

public class BaseDaoImpl<T,ID extends Serializable> extends SimpleJpaRepository<T, ID> implements BaseDao<T,ID>{    private final EntityManager em;     public BaseDaoImpl(Class<T> domainClass, EntityManager em) {        super(domainClass, em);        this.em = em;     }    @Override    public void myMethod() {    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

繼承于SimpleJpaRepository不單可以讓我們獲取操作數(shù)據(jù)庫的EntityManager ,還可以實現(xiàn)JpaRepository,JpaSpecificationExecutor的方法,這樣我們就可以只寫我們自己方法的實現(xiàn)

接下來再定義下factory,他的作用是將我們的basedao的實現(xiàn)類扔給factorybean

public class BaseDaoFactory<S, ID extends Serializable> extends JpaRepositoryFactory {    public BaseDaoFactory(EntityManager entityManager) {        super(entityManager);    }    @SuppressWarnings({ "rawtypes", "unchecked", "hiding" })    @Override    protected <T, ID extends Serializable> SimpleJpaRepository<?, ?> getTargetRepository(RepositoryMetadata metadata,            EntityManager entityManager) {        // TODO Auto-generated method stub        return new BaseDaoImpl(metadata.getDomainType(), entityManager);    }    @Override    protected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) {        // TODO Auto-generated method stub        return BaseDao.class;    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

然后再定義一個factorybean,接到factory之后,把factory扔了spring data jpa

public class BaseDaoFactoryBean<R extends JpaRepository<S, ID>, S, ID extends Serializable>        extends JpaRepositoryFactoryBean<R, S, ID> {    @SuppressWarnings("rawtypes")    @Override    protected RepositoryFactorySupport createRepositoryFactory(EntityManager entityManager) {        // TODO Auto-generated method stub        return new BaseDaoFactory(entityManager);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

spring data jpa來接了,在配置文件配置自己定義的FactoryBean,這樣就可以直接使用你的baseDao了

<jpa:repositories base-package="com.liuxg.**.dao"        repository-impl-postfix="Impl"         query-lookup-strategy = "create-if-not-found"        factory-class="com.liuxg.base.dao.BaseDaoFactoryBean"        entity-manager-factory-ref="entityManagerFactory"        transaction-manager-ref="transactionManager" >    </jpa:repositories>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

然后下次我們要用,就這樣子用

public interface TaskDao extends BaseDao<Task,Long>{}
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

在service層,你就可以用spring data jpa的方法和自己定義的一些通用方法了,如果你還想在自己模塊再定義一些方法,那參考
http://blog.csdn.net/yingxiake/article/details/51017699
然后我們就這么寫

public interface TaskDao extends BaseDao<Task,Long>,TaskDaoCustom<Task, Long>{}
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

然后,畢竟有一些東西,框架還是幫我們不了啊,太復(fù)雜的業(yè)務(wù),想自己寫操作數(shù)據(jù)庫,想自己寫sql原生語句,那咋辦啊,親,那就只能利用EntityManager了,利用jpa api直接自己干了,下次看看怎么用EntityManager自己干活了

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
程序員應(yīng)知應(yīng)會之Spring Data Jpa為什么不用寫@Repository注解?
【原創(chuàng)】Spring Boot 集成Spring Data JPA的玩法
Spring Data JPA開發(fā)手冊
Spring 與 EJB 比較
Spring Data —— 完全統(tǒng)一的API?
JPA整合spring具體實現(xiàn)方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服