Spring Web 开发中的通用 DAO

Posted

技术标签:

【中文标题】Spring Web 开发中的通用 DAO【英文标题】:Generic DAO in Spring Web Development 【发布时间】:2015-07-04 15:54:05 【问题描述】:

如何将 DAO 层 中的这些代码设置为 GENERIC 以避免代码冗余并在多种情况下有效地使用一组简单的代码使用 Spring Web 开发?

ItemInfoDao.xml

<select id = "getItem1" resultMap="resultItem1">
    SELECT item_id, name, area FROM item1
</select> 
<insert id="insertItem1">
    INSERT INTO item1 (item_id, name, area) 
         VALUES (#itemId, #itemName, #itemArea)
</insert>
<select id = "getItem2" resultMap="resultItem2">
    SELECT item_id, name, area FROM item2
</select>
<insert id="insertItem2">
    INSERT INTO item2 (item_id, name, area) 
         VALUES (#itemId, #itemName, #itemArea)
</insert>

ItemInfoDao.java

List<Package> getItem1(Package package);

void insertItem1(Package package );

List<Box> getItem2(Box box);

void insertItem2(Box box);

【问题讨论】:

【参考方案1】:

使用 Spring-Data-JPA 避免简单的 DB CRUD 操作的样板代码。

你可以定义一个通用接口:

@NoRepositoryBean
public interface ItemDao<T> extends JpaRepository<T, Long> 
    T getItem(T input);

    void insertItem(T input);

Package 的具体实现是:

public interface PackageDao extends ItemDao<Package> 


Box 的具体实现将是:

public interface BoxDao extends ItemDao<Box> 


【讨论】:

以上是关于Spring Web 开发中的通用 DAO的主要内容,如果未能解决你的问题,请参考以下文章

使用来自多个表的信息来记录交付的通用或特定 DAO?

java中的通用DAO

java web项目DAO层通用接口BaseDao与实现类BaseDaoImpl

Spring Transactions 和通用 DAO 和服务的最佳实践

Spring详细基本开发流程

Spring MVC:通用 DAO 和服务类