Ich entwickle eine Webanwendung mit Federrahmen und mybatis.Kann Spring DAO in Serviceebene zusammengeführt werden?
In den meisten Fällen (bei mir am wenigsten), sind DAO Methoden sehr kurz etwas wie folgt aus:
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
public User getUser(String userId) {
return (User) getSqlSession().selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId);
}
}
Also im Grunde, ich brauche für jede Abfrage ein Verfahren (zB getUser(String userId)
) in DAO zu schreiben, das ist an Serviceobjekte weitergeleitet werden, an denen sie verwendet werden. Es scheint mir unnötig überflüssig zu sein.
Mein Kollege versucht es einfach zu machen. Er schrieb CommonDao
wie folgt aus:
@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);
}
}
So können wir diese Methoden in Dienste wie verwenden:
@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);
...
}
}
Ich bin ein bisschen wie dieser approch da es Codes einfacher macht. Aber ich bin mir nicht sicher, ob es gut ist, zu folgen.
ist es nicht, verwenden Sie Generika, wird viel helfen. Denken Sie nur an die Zeit, wenn Sie die Benennung einer dieser Klassen umgestalten, Sie müssten alle Namen finden, die so geschrieben sind, und sie manuell ändern. – Sarief
auch, schauen Sie sich Spring Daten, insbesondere -> Repositories. sparen Sie viele CRUD Eingabe – Sarief
PS: Objekte zurückgeben ist eine schlechte Praxis. was wirst du mit ihnen machen? – Sarief