Spring整合MyBatis 亲测有效

前言:通过前面的内容,我们学习了Spring和MyBatis框架,了解Spring可以作为粘合剂,使其他框架组合在一起建立一个更完整独立的体系,下面带大家学习Spring整合MyBatis的步骤。


1、导入依赖

        <dependencies>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.7</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.19</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.2</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.26</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>5.2.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>5.2.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.2.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-expression</artifactId>
                <version>5.2.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>5.2.7.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjtools</artifactId>
                <version>1.9.5</version>
            </dependency>
            <dependency>
                <groupId>aopalliance</groupId>
                <artifactId>aopalliance</artifactId>
                <version>1.0</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>1.9.0</version>
            </dependency>
            <dependency>
                <groupId>cglib</groupId>
                <artifactId>cglib</artifactId>
                <version>3.3.0</version>
            </dependency>
            <dependency>
                <groupId>commons-dbcp</groupId>
                <artifactId>commons-dbcp</artifactId>
                <version>1.4</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>1.3.0</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>5.3.10</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>5.3.10</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>4.3.7.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>4.3.7.RELEASE</version>
            </dependency>
        </dependencies>

2、配置mybatis文件mybatis-config.xml(不配置数据源,只取别名和引入映射文件)和映射文件XXXMapper.xml  

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="autoMappingBehavior" value="FULL"/>
    </settings>
        <!--取别名-->
    <typeAliases>
        <package name="pojo"/>
    </typeAliases>
    <!--加载sql映射文件-->
    <mappers>
        <mapper resource="mapper/XXXMapper.xml"/>
    </mappers>
</configuration>

3、创建实体类,以及接口(三层结构)


  4、建立Spring配置文件applicationContext.xml

配置数据源所用的配置文件:database.properties

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
       <context:component-scan base-package="service,mapper" />
       <!--配置数据源-->
       <context:property-placeholder location="database.properties"/>
       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
              <property name="driverClassName" value="${drive}"/>
              <property name="url" value="${url}"/>
              <property name="username" value="${jdbc.user}"/>
              <property name="password" value="${jdbc.pwd}"/>
       </bean>
       <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
              <property name="dataSource" ref="dataSource"/>
              <property name="configLocation" value="classpath:mybatis-config.xml"/>
       </bean>
       <!--配置扫描包-->
       <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
              <property name="basePackage" value="mapper"/>
       </bean>
</beans>

BasicDataSource:

BasicDataSource是Apache Commons DBCP(Database Connection Pool)库中的一个类,用于创建和管理数据库连接池。

BasicDataSource类的源码位于org.apache.commons.dbcp2包下,继承自org.apache.commons.dbcp2.PoolingDataSource接口,实现了javax.sql.DataSource接口。

以下是重要方法和属性的解析:

  • setDriverClassName(String driverClassName)方法:用于设置JDBC驱动程序的类名。
  • setUrl(String url)方法:用于设置数据库的URL。
  • setUsername(String username)方法:用于设置登录数据库所需的用户名。
  • setPassword(String password)方法:用于设置登录数据库所需的密码。
  • setInitialSize(int initialSize)方法:用于设置连接池的初始大小,即连接池启动时创建的连接数。
  • setMaxTotal(int maxTotal)方法:用于设置连接池的最大连接数。
  • setMaxWaitMillis(long maxWaitMillis)方法:用于设置获取连接的最大等待时间。
  • setValidationQuery(String validationQuery)方法:用于设置用于检验连接是否有效的SQL查询语句。
  • createDataSource()方法:该方法用于创建数据源。在方法内部,首先会根据配置的属性创建BasicDataSource对象,并通过setters方法设置相关属性值。然后,设置连接池的验证查询语句、验证查询超时时间、连接池的最大生存时间等属性。最后,返回创建好的BasicDataSource对象。
  • getConnection()方法:该方法是实现javax.sql.DataSource接口的方法,用于获取数据库连接。在方法内部,首先通过连接池的borrowObject()方法从连接池中获取一个连接对象。如果连接对象为空,则会根据连接池的配置创建一个新的连接对象。
  • close()方法:用于关闭连接池,释放所有的数据库连接。

SqlSessionFactoryBean:

SqlSessionFactoryBean是Spring框架提供的一个用于创建和配置MyBatis的SqlSessionFactory的工厂类。它是MyBatis与Spring框架的整合的关键之一。

SqlSessionFactoryBean的主要作用是创建SqlSessionFactory实例,并将其配置为Spring容器中的一个bean,以供其他组件使用。SqlSessionFactory是MyBatis的核心接口,用于生成SqlSession,而SqlSession则用于执行SQL语句和管理数据库连接。

下面是SqlSessionFactoryBean的一些主要属性和功能:

  • dataSource:指定数据源,用于获取数据库连接。可以配置一个JDBC数据源或者一个Spring管理的数据源。
  • configLocation:指定MyBatis的配置文件位置。通过配置文件可以进行一些全局配置,如类型别名、插件、拦截器等。
  • mapperLocations:指定Mapper接口文件的位置。Mapper接口定义了SQL语句的映射关系,通过扫描指定位置下的Mapper接口文件,可以自动注册Mapper接口。
  • typeAliasesPackage:指定实体类(POJO)的包路径。通过扫描指定包路径下的类,可以自动注册实体类的别名。
  • plugins:配置插件列表。插件可以对SQL执行过程进行拦截和增强,如分页插件、SQL日志打印插件等。
  • transactionFactory:指定事务管理器。可以配置JDBC事务管理器或者Spring的事务管理器。
  • environment:指定MyBatis的运行环境。一个SqlSessionFactory可以配置多个运行环境,每个环境可以有不同的数据源和事务管理器。

除了上述属性外,SqlSessionFactoryBean还提供了一些可重写的方法,可以进行自定义配置。

总结来说,SqlSessionFactoryBean是Spring框架与MyBatis整合的桥梁,通过配置SqlSessionFactoryBean,我们可以方便地创建和配置MyBatis的SqlSessionFactory,并将其纳入Spring容器管理。这样,我们就可以在Spring应用中轻松使用MyBatis进行数据库操作。

MapperScannerConfigurer:

MapperScannerConfigurer是Spring框架中的一个类,用于自动扫描并注册MyBatis的Mapper接口,位于org.mybatis.spring包下,继承自org.springframework.beans.factory.config.BeanDefinitionRegistryPostProcessor接口,是一个Bean定义注册后处理器。

MapperScannerConfigurer主要是通过扫描指定包路径下的Mapper接口并将其注册为Spring的Bean定义。这样,在使用时就可以通过@Autowired注解或者@Autowired标签来自动注入Mapper接口,方便地进行数据库操作。


5、编写测试代码

 

 

 


6、测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!SpringMyBatis是常用的Java开发框架,可以通过整合它们来实现更高效的数据库访问。 要在Spring整合MyBatis,您可以按照以下步骤进行操作: 1. 首先,在您的项目中添加所需的依赖项。这SpringMyBatis的核心库以及连接池(例如,druid或HikariCP)和数据库驱动程序。 2. 在Spring配置文件中,配置数据源(DataSource)和事务管理器(TransactionManager)。您可以使用Spring提供的数据源和事务管理器,也可以使用第三方库。 3. 创建MyBatis配置文件(通常是一个XML文件),其中含数据库连接信息和映射文件的位置。在这个配置文件中,您需要指定MyBatis的一些基本设置,例如数据库类型、连接池、事务管理器等。 4. 创建Mapper接口和对应的Mapper XML文件。Mapper接口定义了数据库操作的方法,而Mapper XML文件定义了具体的SQL语句。 5. 在Spring配置文件中,配置MyBatisSqlSessionFactoryBean和MapperScannerConfigurer。SqlSessionFactoryBean是MyBatis的核心类,用于创建SqlSession对象,而MapperScannerConfigurer用于自动扫描和注册Mapper接口。 6. 最后,在您的代码中使用@Autowired注解将Mapper接口注入到需要使用数据库操作的地方,然后就可以调用Mapper接口中定义的方法来进行数据库操作了。 通过以上步骤,您就可以成功地将SpringMyBatis进行整合,实现数据库访问功能。希望对您有所帮助!如果您有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值