Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MyBatis-映射器vs DAO_Java_Sql_Dao_Datamapper_Mybatis - Fatal编程技术网

Java MyBatis-映射器vs DAO

Java MyBatis-映射器vs DAO,java,sql,dao,datamapper,mybatis,Java,Sql,Dao,Datamapper,Mybatis,我试图得到答案,并在MyBatis文档中找到一条评论: 通常MapperFactoryBean比这个类更受欢迎,因为它 不需要额外的代码。但是,如果需要,这个类(DAO)非常有用 其他非Mybati在您的DAO中工作,需要使用具体类,并使用SqlSessionDaoSupport或SqlSessionFactory 如果我今天选择在我的项目中使用MapperFactoryBean,但后来我需要使用concrete DAO(可能是因为您可能无法在mapper中100%使用SQLs),那么我需要更改

我试图得到答案,并在MyBatis文档中找到一条评论:

通常
MapperFactoryBean
比这个类更受欢迎,因为它 不需要额外的代码。但是,如果需要,这个类(
DAO
)非常有用 其他非Mybati在您的
DAO
中工作,需要使用具体类,并使用
SqlSessionDaoSupport
SqlSessionFactory

如果我今天选择在我的项目中使用
MapperFactoryBean
,但后来我需要使用
concrete DAO
(可能是因为您可能无法在mapper中100%使用SQLs),那么我需要更改设计

如果上述情况属实,那么MapperFactoryBean的用处将非常小,并且永远不会(或大部分情况下)成为一种选择


换句话说:MapperFactoryBean和DAO能否共存?即使是,他们应该是吗?

你知道这种“非MyBatis工作”或“某种动态SQL”到底是什么吗?我不是。但是,假设编写映射程序对开发人员来说更快、更直观,那么您就节省了大量时间。当有一些可怕的非MyBatis的事情要做时,为什么不编写一个非常具体的DAO,它只做这一件非MyBatis的事情呢?

+1用于共存(DAO不是必须的!)如果您在spring框架中使用MyBatis,这一点尤其正确


至于重构部分,如果你有一个合适的测试框架来帮助你,那就更好了

你为什么这么想?你的问题是什么?我的问题是:如果我使用的是映射程序,我需要创建一些动态SQL(这可能会超出MyBatis的支持范围),我最终会使用DAO。所以,为什么不在一开始就使用DAO作为设计选择,即使你有一点点的机会满足这个要求呢?为什么不写DAO(如果你想要一个可怕的非MyBatis)是因为我需要将整个服务更改为DAO,而不是现有的mapper。@Sandepjindal不,我想说的是两者可以相邻存在。对,可能,这是一个正确的问题:“MapperFactoryBean和DAO是否可以共存?即使是,它们是否应该共存?”我也更新了这个问题。