spring mybatis整合

  mybatis和spring整合的配置方法有很多,核心都是一个矛盾:如何让spring管理mybatis为mapper生成的代理对象。

1、配置数据源

  单独使用mybatis的时候数据源是在mybatis配置文件中配置的,有了spring现在可以交给spring管理。

        <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
                <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/javaee"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
        </bean>

2、配置mybatis.xml

  即使是和spring整合一起使用,mybatis也需要通过某种方式能够读取并使用mybatis.xml文件,为此需要使用spring-mybatis整合包中提供的类sqlSessionFactoryBean。这个bean可以有许许多多的可供配置选项这里只配置了两个:1、数据源 2、mybatis.xml

        <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactoryBean">
                <property name="dataSource" ref="dataSource"/>
                <property name="configLocation" value="mybatis.xml"/>

        </bean>

  mybatis.xml的写法也和之前不同,不仅不需要写数据源也不需要写mapper接口的位置了!!!,mapper接口文件的位置将在后面配置

<configuration>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING" />
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <environments default="default">
        <environment id="default">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <!--<property name="driver" value="com.mysql.jdbc.Driver"/>-->
                <!--<property name="url" value="jdbc:mysql://localhost:3306/javaee"/>-->
                <!--<property name="username" value="root"/>-->
                <!--<property name="password" value="password"/>-->
            </dataSource>
        </environment>
    </environments>

    <!--<mappers>-->
        <!--<package name="mapper"/>-->
    <!--</mappers>-->
</configuration>

3、让spring知道mapper接口在哪

  这一步仍然也是有很多方法,这里只记录最简单且实用性较强的方法。

  首先第一步是让spring容器管理mapper接口的bean,即使用@Repository注解。

@Repository
public interface UserMapper {
    public User getUserById(long id);
}

  第二步让spring把这mapper的bean和mybatis整合起来,使用MapperScannerConfigurer,MapperScannerConfigurer也是spring-mybatis下的一个bean。顾名思义,这个bean可以以包扫描的方式去加载一个mapper包下的所有mapper。

        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="annotationClass" value="org.springframework.stereotype.Repository"/>
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
            <property name="basePackage" value="mapper"/>
        </bean>

 

posted @ 2019-03-28 15:36  AshOfTime  阅读(150)  评论(0编辑  收藏  举报