Java - 避免创建空子类和接口或生成Java源代码模板

Eri*_*ang 12 java inheritance spring code-generation mybatis

我正在使用Spring和开发一个java web项目Mybatis.
在dao级别,我定义了一个超级类和一个超级接口,它实现了所有常用方法.
因此,当在dao级别为特定模型创建子类或接口时,我只需要实现super dao类和接口,并将类体和接口体留空.超过一半的子dao级别类和接口一直是空的.


(空dao类和接口的示例:)

RoleDao.java

package core.dao;

import core.dao.base.BaseDao;
import core.model.Role;

public interface RoleDao extends BaseDao<Role> {
}
Run Code Online (Sandbox Code Playgroud)

RoleDaoImpl.java

package core.dao.impl;

import org.springframework.stereotype.Repository;

import core.dao.RoleDao;
import core.dao.base.BaseDaoImpl;
import core.model.Role;

@Repository
public class RoleDaoImpl extends BaseDaoImpl<Role> implements RoleDao {
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

是否有一种避免编写这些空类和接口的好方法,同时仍然可以使用它们?

我正在考虑使用Code generator生成这些类文件,或者Java reflection根据需要在运行时创建这样的类和接口,但还没有详细说明.


@ 更新

在没有创建源代码的情况下实现目标似乎不灵活,所以我决定为java web项目编写一些简单的java源代码生成器.

一个叫做的工具codemodel非常适合这样做,它由Sun开发,现在由Oracle拥有,我猜.

并且,我自己给出了我编写的用于生成java源代码的代码的答案.

Kle*_*son 3

大约一个月前,我问自己同样的事情:)所以,似乎我们有一种解决方案,因为你正在使用 Spring 库。正如我在文档中读到的:

Mybatis-Spring 提供了一个代理工厂:MapperFactoryBean,而不是使用 SqlSessionDaoSupport 或 SqlSessionTemplate 手动编写数据访问对象 (DAO)。此类允许您将数据映射器接口直接注入到服务 bean 中。使用映射器时,您只需调用它们,就像您一直调用 DAO 一样,但您不需要编写任何 DAO 实现代码,因为 MyBatis-Spring 将为您创建一个代理。

GitHub上 以及MyBatis 页面上都有一个示例。

我希望它能给您一些见解,因为重构整个系统以受益于如此好的功能也许是不可行的。