mybatis学习七整合spring

1.整合思路

   需要spring通过单例的模式管理sqlSessionFactory,spring和mybatis整合生成代理对象,使用sqlSessionFactory创建sqlSession,持久层的mapper都需要有spring管理

2.整合环境

   mybatis的jar包 ,spring的jar包

   mybatis与spring整合包:早起ibatis与spring整合包由spring提供,现在mybatis与spring的整合包由mybatis提供,mybatis-spring-1.2.2.jar

3.sqlSessionFactory会话工厂

   在spring的配置文件中配置sqlSessionFactory与数据源,sqlSessionFactory在mybatis和spring的整合包下

   spring的配置文件如下配置sqlSessionFactory和数据源:

 

  <bean id="sqlSessionFactory" class ="        .sqlSessionFactory" >

             <property name="configLocation" value="mybatis的全局配置文件" />

             <property name="dataSource" ref="dataSource"/> //ref 中的dataSource 是数据源的id

   </bean>

   <bean id="dataSource" class="  ">  //配置数据源     ,class表示的是一种链接数据库的方法类,spring 中jdbc的,或者其他的连接池

             数据库的配置如<property id="password"  value="password" />

   </bean>

4.原始的dao层开发(与spring整合)

   4.1mapper.xml

        写完mapper要在sqlMapConfig.xml中加载

   4.2dao层

        让测试类(执行类)继承SqlSessionDaoSupport类(这个类自带setSQLSeeFactory方法)

        SqlSession的获取方法改为:

        SqlSession sqlSession = this.getSqlSession();

        sqlSession.close();//可以去掉,spring代理后,自动释放资源(即在编写时,最后关闭sqlSession可以不用写)

   4.3在spring配置文件中配置sqlSessionFactory

     

  <bean id="测试类(执行类)" class="测试类的全路径名如:com.cn.类名">

                <property name="sqlSessionFactory" ref="sqlSessionFactory" />  //ref是在配置文件中写好的bean的id,看上面的 第3步

        </bean>


   4.4测试前要得到spring容器

        即在主函数中获取测试类的bean    

5.mapper代理的方法

   5.1mapper.xml

        userMapper.xml userMapper.java

   5.2配置mapper

        整合包里有org.mybatis.spring.mapper.MapperFactoryBean

       

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">

                  <property name="mapperInterface" value="UserMapper.java的全路径名" />//这是进行配置执行数据库操作的接口类

                  <property name="property" name="sqlSessionFactory" ref="sqlSessionFactory" />//同样这里的ref中的sqlSessionFactory在3步骤中已经配置过了

        </bean>


   5.3测试类

        如果用第4步最后的方法继续用ApplicationContext获取5.2中的bean,每一个mapper的接口都需要配置如此,麻烦.

        解决:mapper批量扫描mapper的接口,自动创建代理对象,并且在spring容器中注入(建议使用,代码简洁),

       

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 

               <property name="basePackage" value="包名" /> //指定要扫描的包名

               <property name="sqlSessionFactory"  value="sqlSessionFactory"/>

        </bean>

可以参照这篇:http://blog.csdn.net/pruett/article/details/78452191

        PS:如果要扫描多个包,用半角逗号分隔 ,扫描出的mapper的id是mapper类名(首字母小写,id在ApplicationContext获取的时候用,5.3中的获取一个包和5.2中的单个的获取用一个即可) 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值