之前我们使用springmvc和springJDBC来操作数据库。相比之前的DBUtil操作数据库有了很大的改进,将其中的许多方法进行了封装。但是仍然存在一些不足。首先,很难实现sql语句的 动态封装。其次,对数据库的操作相对有些复杂。无法使软件工程师很好的将精力完全用于sql语句的拼接而要记忆一部分的jdbc操作方法。
我们开始采用mybatis时,我们的注意力可以完全放在sql语句的拼装上。当我们单独使用mybatis时,我们需要注意以下几点:
(1)我们需要编写一个SqlMapperConfig.xml(或者是mybatis-config)文件实现环境的配置以及对我们的mapper.xml(sql语句的映射文件)进行扫描引入。
(2)我们需要通过SqlSessionFactoryBuilder这个类来创建sqLSessionFactory,进而打开sqlSession开关。
随着开发的进行,我们可以将spring和mybatis结合起来,形成ssm框架,即spring,springmvc,mybatis.
所以将spring和mybatis进行结合和单独使用mybatis有一些异同点。
相同点是ssm依旧和mybatis采用面向接口的开发,通过接口产生Mapper类对象,进而实现业务。
产生Mapper类对象可以由完成MapperFactoryBean完成,这是一个生产bean的工厂bean。至于为什么将实现sql语句操作的的方法的类叫做Mapper(映射类)。在我看来,每一个mapper.java文件中的sql方法在映射中对应的key都是全类名+方法名。这保证了其独一性,正如map中的key一样。通过唯一的key查找value(在这里是对数据库操作的sql方法).比如我们在使用我们的UserMapper对象(负责对用户信息进行管理操作的类)时,需要调用sqlSession的getMapper()方法。MapperFactoryBean同样封装了这个方法,生产出来的是这个接口的实现类(这是我自己对mybatis面向接口操作的个人理解)
关于MapperFactoryBean的具体注入方法,我在网上找了一些代码
需要注入一下两个属性:
--SqlSessionFactoryBean对象,用于提供SqlSession
--要返回Mapper对象的Mapper接口
关于MapperFactoryBean的解释就到这里。接下来我们来看看spring和mybatis结合中两个新添加的类org.mybatis.spring.SqlSessionFactoryBean,org.mybatis.spring.mapper.MapperScannerConfigurer.下面我们来对这两个类进行解析。
(1)org.mybatis.spring.SqlSessionFactoryBean
我们知道,在单独使用mybatis时,所有的操作都是围绕sqlSessionFactory和sqlSession展开的,当我们将spring和mybatis结合起来的时候,实际上我们还是通过sqlSession实现操作的,同样需要SqlSession。SqlSessionFactoryBean这个组件通过原来的SqlSessionFactoryBuilder生成SqlSessionFactory对象,为整合应用提供SqlSession对象。我们在配置个bean的时候,需要注意它的两个属性dataSource和configLocation.第一个属性负责和数据库的连接,第二个属性则是将我们的mapper.xml的总文件也就是(SqlMapperConfig.xml)的路径。
(2)org.mybatis.spring.mapper.MapperScannerConfigurer
如果大量的mapper,需要使用mybatis-spring.jar通过的MapperScannerConfigurer组件,通过这个组件可以自动扫描指定包下的各个Mapper接口,并注册对应的MapperFactoryBean对象。
其作用和MapperFactoryBean是类似的,同样需要配置两个属性sqlSessionFactoryName和basepackage。第一个属性就是我们刚才配置的sqlSessionFactoryBean.而basepackage则是我们的具体的sql语句所在的映射文件内,这些xml文件通常写在dao层包下。将这个包的路径写入即可。
最后我们来看看之前的SqlMapperConfig.xml文件。和之前的文件不同,由于spring和mybatis的结合,使得环境的管理配置交由Spring统一完成。所以关于数据库和事务的配置在这个文件中都不用体现。同样关于
中对相应的映射文件进行扫描也不需要了。所以这个文件的代码就省略了很多。
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">