zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    GC
    java基石-JVM
    golang 结构体指针及赋值
    golang 记一次map中struct的管道造成死锁的解决方式
    golang 封装"执行shell管理redis(string,集合等)"成api
    golang panic及处理
    Python简直无所不能!在电脑上如何调用手机摄像头?教你轻松搞定!
    2021最新版Python爬取抖音小姐姐短视频,无水印,超级详细!(附视频/源码)
    自从学会Python爬虫后,爬视频我只爬小姐姐!教你批量下载某短视频网站视频!
    突然不知道听什么歌了,但是排行榜的准没错,于是用Python全部都爬下来了!
  • 原文地址:https://www.cnblogs.com/AshOfTime/p/10615392.html
Copyright © 2011-2022 走看看