有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java可以将Spring DAO合并到服务层吗?

我正在用spring框架和mybatis开发一个web应用程序

在大多数情况下(至少对我来说),DAO的方法非常简短,比如:

public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
  public User getUser(String userId) {
    return (User) getSqlSession().selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);
  }
}

因此,基本上,我需要在DAO中为每个被转发到服务对象的查询编写一个方法(例如getUser(String userId))。对我来说,这似乎是不必要的重复

我的同事正在努力使事情变得简单。他这样写CommonDao

@Repository
public class CommonDao {
    @Autowired
    private SqlSessionTemplate sqlSession;

    public Object insert(String queryId, Object params) {
        return sqlSession.insert(queryId, params);
    }

    public Object update(String queryId, Object params) {
        return sqlSession.update(queryId, params);
    }

    public Object delete(String queryId, Object params) {
        return sqlSession.delete(queryId, params);
    }

    public Object selectOne(String queryId) {
        return sqlSession.selectOne(queryId);
    }

    public Object selectOne(String queryId, Object params) {
        return sqlSession.selectOne(queryId, params);
    }
}

因此,我们可以在以下服务中使用这些方法:

@Service
public class CrudService {
    ...
    @Autowired
    private CommonDao commonDao;
    ...

    public UserDto selectUser(Integer userId) {
        ...
        UserDto userDto = (UserDto) commonDao.selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);
        ...
    }
}

我有点喜欢这种方法,因为它使代码更简单。但我不确定这是一个好的预演


共 (0) 个答案