如何实现Mybatis与Spring的集成

2025-11-11 04:19:00

1、首先引入spring和mybatis相关依赖jar文件,如果使用maven可以在pom.xml文件里添加,这里不做列举

重点介绍下mybatis-spring依赖,这个是mybatis和spring集成一起的关键桥梁

<dependency>

    <groupId>org.mybatis</groupId>

    <artifactId>mybatis-spring</artifactId>

    <version>1.2.3</version>

</dependency>

如何实现Mybatis与Spring的集成

2、添加jdbc.properties数据源配置

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://xxx:3306/study?useUnicode=true&characterEncoding=UTF-8

jdbc.username=root

jdbc.password=xxx

#druid datasource

druid.initialSize=1

druid.minIdle=3

druid.maxActive=10

druid.maxWait=60000

druid.timeBetweenEvictionRunsMillis=60000

druid.minEvictableIdleTimeMillis=300000

druid.validationQuery=select now()

druid.testWhileIdle=true

druid.testOnBorrow=false

druid.testOnReturn=false

druid.poolPreparedStatements=true

druid.maxPoolPreparedStatementPerConnectionSize=20

druid.filters=wall,stat

如何实现Mybatis与Spring的集成

3、添加generatorConfig.xml文件,mybatis逆向配置,可以根据数据库表结构生成dao文件

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >

<generatorConfiguration>

  <properties resource="jdbc.properties" />

   <context id="managementTables" targetRuntime="MyBatis3">

     <property name="javaFileEncoding" value="UTF-8"/>

       <commentGenerator>

           <property name="suppressAllComments" value="false" />

           <property name="suppressDate" value="true" />

       </commentGenerator>

       <jdbcConnection driverClass="${jdbc.driver}"

           connectionURL="${jdbc.url}" 

           userId="${jdbc.username}" 

           password="${jdbc.password}" />

       <!-- 下面的都不用修改 -->

       <javaTypeResolver>

           <property name="forceBigDecimals" value="false" />

       </javaTypeResolver>

       

       <!-- generate Model -->

       <javaModelGenerator targetPackage="cn.sw.study.web.model" targetProject="src/main/java">

           <property name="enableSubPackages" value="true" />

           <property name="trimStrings" value="true" />

       </javaModelGenerator>

       

       <!-- generate xml -->

       <sqlMapGenerator targetPackage="sqlmap"  targetProject="src/main/resources">

           <property name="enableSubPackages" value="true" />

       </sqlMapGenerator>

       

       <!-- generate Mapper -->

       <javaClientGenerator type="XMLMAPPER" targetPackage="cn.sw.study.web.dao"  targetProject="src/main/java">

           <property name="enableSubPackages" value="true" />

       </javaClientGenerator>

       

       <!-- 规则信息表 -->

       <table schema="" tableName="t_user" domainObjectName="User">

           <generatedKey column="id" sqlStatement="JDBC" identity="true"/>

       </table>

   </context>

</generatorConfiguration>

如何实现Mybatis与Spring的集成

4、maven配置文件中添加mybatis-generator-maven-plugin插件

<plugin>

    <groupId>org.mybatis.generator</groupId>

    <artifactId>mybatis-generator-maven-plugin</artifactId>

    <version>1.3.2</version>

    <configuration>

        <verbose>true</verbose>

        <overwrite>true</overwrite>

    </configuration>

    <dependencies>

        <dependency>

            <groupId>mysql</groupId>

            <artifactId>mysql-connector-java</artifactId>

            <version>5.1.31</version>

        </dependency>

    </dependencies>

</plugin>

如何实现Mybatis与Spring的集成

5、然后在idea的maven对话框中选择对应项目模块的mybatis-generator任务,双击运行生成dao、model、sqlmap文件

如何实现Mybatis与Spring的集成

6、在resources目录下新建一个spring的配置文件,命名为applicationContext-db.xml,专门用来配置mybatis的数据库配置

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.springframework.org/schema/beans 

                           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">

<!-- main datasource -->

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"

init-method="init" destroy-method="close">

        <property name="url" value="${jdbc.url}" />

        <property name="username" value="${jdbc.username}" />

        <property name="password" value="${jdbc.password}" />

        <!-- <property name="connectionProperties" value="config.decrypt=true" /> -->

        <!-- 配置初始化大小、最小、最大 -->

        <property name="initialSize" value="${druid.initialSize}"/>

        <property name="minIdle" value="${druid.minIdle}"/>

        <property name="maxActive" value="${druid.maxActive}"/>

        <!-- 配置获取连接等待超时的时间 -->

        <property name="maxWait" value="${druid.maxWait}"/>

        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->

        <property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" />

        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->

        <property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" />

        <property name="validationQuery" value="${druid.validationQuery}" />

        <property name="testWhileIdle" value="${druid.testWhileIdle}" />

        <property name="testOnBorrow" value="${druid.testOnBorrow}" />

        <property name="testOnReturn" value="${druid.testOnReturn}" />

        <!-- 打开PSCache,并且指定每个连接上PSCache的大小  如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。-->

        <property name="poolPreparedStatements" value="${druid.poolPreparedStatements}" />

        <property name="maxPoolPreparedStatementPerConnectionSize" value="${druid.maxPoolPreparedStatementPerConnectionSize}" />

        <!-- 配置监控统计拦截的filters -->

        <property name="filters" value="${druid.filters}" />

</bean>

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" lazy-init="false">

        <property name="dataSource" ref="dataSource"></property>

        <property name="configLocation" value="classpath:sqlmap-config.xml"></property>

        <!-- mapper和resultmap配置路径 -->

        <property name="mapperLocations">

            <list>

                <!--表示在sqlmap包或以下所有目录中所有文件 -->

                <value>classpath:sqlmap/*.xml</value>

            </list>

        </property>

    </bean>

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

        <property name="basePackage" value="cn.sw.study.web.dao" />

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

    </bean>

</beans>

如何实现Mybatis与Spring的集成

7、上面一步是mybatis和spring集成的关键,分成三个部分

第一:定义数据源dataSource

第二:定义sqlSessionFactory,mapperLocations对应之前生成的sqlmap目录配置

第三:org.mybatis.spring.mapper.MapperScannerConfigurer,自动扫描生成的dao接口文件

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢