0

How can I set these codes in the DAO Layer to be GENERIC in order for me to avoid code redundancy and to efficiently use a simple set of codes in multiple circumstances using Spring web development?

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);
Procorpio
  • 13
  • 5

1 Answers1

1

Use Spring-Data-JPA to avoid boilerplate code for simple DB CRUD operations.

You can define a generic interface:

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

    void insertItem(T input);
}

Concrete implementation for Package will be:

public interface PackageDao extends ItemDao<Package> {

}

Concrete implementation for Box will be:

public interface BoxDao extends ItemDao<Box> {

}
Nitin Arora
  • 2,650
  • 1
  • 26
  • 27