为什么springMVC和Mybatis逐渐流行起来了
1个回答
展开全部
因为springMVC和Mybatis组合,逐渐代替了SSH中的hibernate和Struts,hibernate入门起来比较难与繁琐。
一般,现在的新公司使用的框架就是SpringMVC+MyBatis,没办法只能硬着头皮去做,但是像这种MVC结构的框架都有一个共同的模式就是:
前台(View)会将参数传递到控制层(controller),然后控制层将请求分发到业务层(service),然后业务层再调用相应的持久层(Dao)来进行数据的持久化操作。
所以写一套业务基本上是Jsp→Action→service→serviceImpl→Dao→DaoImpl→sql,最后在Dao层再调用一个通用的方法,比方说你想保存一条数据,可能会有一个通用的Dao类(BaseDao),然后不同的Dao去继承这个BaseDao,然后调用父类的通用方法,然后这个BaseDao再通过sql来进行数据持久化就好了。
总之感觉,这样一套写下来,真的有点繁琐与麻烦,但是MyBatis来了,它的到来真的给我有一种小清新的感觉。
现在MyBatis有一套更简便的玩法,因为MyBatis的Mapper(sql)有一个叫namespace(mapper的名字)这个属性,它有两种使用方式:
1,
比方说你把namespace定义为Teacher:顾名思义,这个Mapper里面所有的sql语句都是对Teacher进行操作的,然后在这个Mapper中有一个叫addTeacherInfo的语句
这个时候在程序中需要通过一个BaseDao来调用:方式大致为super.insert("Teacher.addTeacherInfo",Teacher)
//解释一下,继承了BaseDao类,然后调用父类中的update这个通用方法,第一个参数就是namespace.sql名,然后第二个参数就是要进行持久化的数据,这样就可以进行持久化了,是不是感觉被骗了,然并卵?? 哈哈 稍等,看下面
2.说到namespace顾名思义,就是命名空间的意思,在.Net中引用一个其他的类就需要引入对应类所在的命名空间,而java就叫包,要导包。
所以Mapper就能通过namespace进行映射一个类
比方说,你定义一个Dao接口,然后这个接口里面有一个方法叫addTeacherInfo,然后你将Mapper的namespace定义为这个Dao接口的完整类名,然后在Mapper里面也有一个叫addTeacherInfo的sql语句,这时候你在程序里面直接调用这个接口时就会直接调用mapper中的sql语句,然后得到返回值了,这样就不必要将参数传递到dao中,然后在dao中再将参数传递到sql中然后再进行操作,是不是有那么一点不一样啊。
一般,现在的新公司使用的框架就是SpringMVC+MyBatis,没办法只能硬着头皮去做,但是像这种MVC结构的框架都有一个共同的模式就是:
前台(View)会将参数传递到控制层(controller),然后控制层将请求分发到业务层(service),然后业务层再调用相应的持久层(Dao)来进行数据的持久化操作。
所以写一套业务基本上是Jsp→Action→service→serviceImpl→Dao→DaoImpl→sql,最后在Dao层再调用一个通用的方法,比方说你想保存一条数据,可能会有一个通用的Dao类(BaseDao),然后不同的Dao去继承这个BaseDao,然后调用父类的通用方法,然后这个BaseDao再通过sql来进行数据持久化就好了。
总之感觉,这样一套写下来,真的有点繁琐与麻烦,但是MyBatis来了,它的到来真的给我有一种小清新的感觉。
现在MyBatis有一套更简便的玩法,因为MyBatis的Mapper(sql)有一个叫namespace(mapper的名字)这个属性,它有两种使用方式:
1,
比方说你把namespace定义为Teacher:顾名思义,这个Mapper里面所有的sql语句都是对Teacher进行操作的,然后在这个Mapper中有一个叫addTeacherInfo的语句
这个时候在程序中需要通过一个BaseDao来调用:方式大致为super.insert("Teacher.addTeacherInfo",Teacher)
//解释一下,继承了BaseDao类,然后调用父类中的update这个通用方法,第一个参数就是namespace.sql名,然后第二个参数就是要进行持久化的数据,这样就可以进行持久化了,是不是感觉被骗了,然并卵?? 哈哈 稍等,看下面
2.说到namespace顾名思义,就是命名空间的意思,在.Net中引用一个其他的类就需要引入对应类所在的命名空间,而java就叫包,要导包。
所以Mapper就能通过namespace进行映射一个类
比方说,你定义一个Dao接口,然后这个接口里面有一个方法叫addTeacherInfo,然后你将Mapper的namespace定义为这个Dao接口的完整类名,然后在Mapper里面也有一个叫addTeacherInfo的sql语句,这时候你在程序里面直接调用这个接口时就会直接调用mapper中的sql语句,然后得到返回值了,这样就不必要将参数传递到dao中,然后在dao中再将参数传递到sql中然后再进行操作,是不是有那么一点不一样啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询