Spring与MyBatis结合使用

1、首先我们需要引入mybatis-spring.jar包

它具有一个MapperFactoryBean组件,封装了根据mapper映射器接口生成实现组件的功能,并且会将生成的实现组件放入spring容器中,供spring容器管理

在之前我们要生成这样的组件,需要:session.getMapper(接口名.class)

现在我们只需要在applicationContext.xml中声明一个bean,即可获得一个UserDao的实现组件:

<!-- 可以根据指定的mapper接口生成实现组件 -->
        <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
            <!-- 指定sqlSession资源 -->
            <property name="sqlSessionFactory" ref="ssf"></property>               
            <!-- 指定映射器接口 -->
            <property name="mapperInterface" value="com.zlc.dao.UserDao"></property>       
        </bean>
        
        <!-- SqlSessionFactoryBean封装了创建SqlSessionFactory组件的过程 -->
        <bean id="ssf" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!-- 注入dataSource -->
            <property name="dataSource" ref="dataSource"></property>
            <!-- 注入Mapper.xml文件位置信息 -->
            <!-- 这样配置就会扫描com/zlc/mapper/下的所有xml文件 -->
            <property name="mapperLocations" value="classpath:com/zlc/mapper/*.xml"></property>
        </bean>
        
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="user" value="#{dbParams.user}"></property>
            <property name="password" value="#{dbParams.password}"></property>
            <property name="driverClass" value="#{dbParams.driverClass}"></property>
            <property name="jdbcUrl" value="#{dbParams.jdbcUrl}"></property>      
        </bean>  
        <util:properties location="classpath:db.properties" id="dbParams">       
        </util:properties>

经过这样配置后,我们可以省去mybatis-config.xml文件。

 写个测试类:

public static void main(String[] args){
        String conf = "applicationContext.xml";
        ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
        UserDao userDao = ac.getBean("userDao",UserDao.class);
        User u = userDao.findByName("zhangsan");
        System.out.println(u.getUser_name());
    
    }

 总结:

(1)配置一个MapperFactoryBean,需要注入SqlSessionFactory,需要注入mapperInterface的全限定接口名

(2)配置一个SqlSessionFactoryBean,需要注入DataSource,需要注入MapperLocations(Mapper.xml)的位置,可以使用通配符

(3)配置一个dataSource,需要注入数据库连接的相关参数

2、利用MapperScannerConfigurer批量生成Mapper映射器实现组件,相当于写了多个MapperFactoryBean,封装了批量生成Mapper组件的功能

 

       <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="sqlSessionFactory" ref="ssf"></property>
            <!-- 扫描com.zlc.dao下所有接口,批量生成实现实例,并交于spring管理 ,实例名默认为接口名首字母小写-->
            <property name="basePackage" value="com.zlc.dao"></property>        
        </bean>
 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="sqlSessionFactory" ref="ssf"></property>
            <!-- 扫描com.zlc.dao下所有接口,批量生成实现实例,并交于spring管理 -->
            <property name="basePackage" value="com.zlc.dao"></property>
            <!-- 追加这个属性后,dao接口还得带这个注解才能被生成实现实例 -->        
            <property name="annotationClass" value="com.zlc.annotation.MyBatisDao"></property>
        
        </bean>

这个注解是一个自定义注解:

public @interface MyBatisDao {

}

 

 

转载于:https://www.cnblogs.com/zlingchao/p/9429160.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值