软件定制开发供应商最新最全面的Spring详解(六)——Spring-Mybatis整合

前言

本文为Spring-Mybatis整合软件定制开发供应商相关内容介绍,-Spring 软件定制开发供应商可以帮助我们将 MyBatis 软件定制开发供应商代码无缝地整合到 Spring 中。 软件定制开发供应商使用这个类库中的类, Spring 将会加载必要的 MyBatis 工厂类和 session 类。 这个类库也提供一个简单的方式来注入 MyBatis 数据映射器和 SqlSession 到业务层的 bean 中。 而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。最终,它并 不会依赖于 MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。

接下来就按步骤介绍如何通过使用MyBatis-Spring来对Spring和Mybatis进行整合。

📌博主主页:
👉Java全栈学习路线可参考:,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:,内含最详尽的算法刷题路线指南及相关资料分享~
👉Java微服务开源项目可参考:

↩️本文上接:


MyBatis-Spring 可以帮助我们将 MyBatis 代码无缝地整合到 Spring 中。

它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。 最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring。

MyBatis-Spring 需要以下版本:

MyBatis-SpringMyBatisSpring FrameworkSpring BatchJava
2.03.5+5.0+4.0+Java 8+
1.33.4+3.2.2+2.1+Java 6+

更多关于MyBatis-Spring的详细内容参考官网:

🍀首先,在pom.xml文件中添加相关包的依赖

要使用 MyBatis-Spring 模块,只需要在类路径下包含 mybatis-spring-2.0.7.jar 文件和相关依赖即可。
如果使用 Maven 作为构建工具,仅需要在 pom.xml 中加入以下代码即可。

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.wang</groupId>    <artifactId>ssm</artifactId>    <version>1.0-SNAPSHOT</version>    <properties>        <maven.compiler.source>11</maven.compiler.source>        <maven.compiler.target>11</maven.compiler.target>    </properties>    <dependencies>        <!-- 单元测试 -->        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.13.2</version>            <scope>test</scope>        </dependency>        <!-- spring上下文的依赖 包含了aop,bean和core-->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>5.2.18.RELEASE</version>        </dependency>		<!-- springjdbc相关的依赖 包含了jdbcTemplate以及事务-->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-jdbc</artifactId>            <version>5.2.18.RELEASE</version>        </dependency>        <dependency>            <groupId>org.aspectj</groupId>            <artifactId>aspectjweaver</artifactId>            <version>1.9.6</version>        </dependency>        <!-- 数据源-->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid</artifactId>            <version>1.2.8</version>        </dependency>        <!-- 日志 -->        <dependency>            <groupId>ch.qos.logback</groupId>            <artifactId>logback-classic</artifactId>            <version>1.2.6</version>        </dependency>        <!-- 数据区驱动-->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>8.0.26</version>        </dependency>        <!-- mybatis-->        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis</artifactId>            <version>3.5.5</version>        </dependency>        <!-- 整合spring和mybatis -->        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis-spring</artifactId>            <version>2.0.7</version>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>            <version>1.18.22</version>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <version>3.8.1</version>                <configuration>                    <source>${maven.compiler.source}</source>                    <target>${maven.compiler.target}</target>                    <encoding>UTF-8</encoding>                </configuration>            </plugin>        </plugins>    </build></project>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100

🍀spring需要管理sqlSessionFactory,通过xml和mapper生成代理由spring统一管理

要和 Spring 一起使用 MyBatis,需要在 Spring 应用上下文中定义至少两样东西:一个 SqlSessionFactory 和至少一个数据映射器类。
在 MyBatis-Spring 中,可使用 SqlSessionFactoryBean来创建 SqlSessionFactory。 要配置这个工厂 bean,只需要把下面代码放在 Spring 的 XML 配置文件中:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  <property name="dataSource" ref="dataSource" /></bean>
  • 1
  • 2
  • 3

spring.xml配置文件:

<?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:p="http://www.springframework.org/schema/p"       xmlns:aop="http://www.springframework.org/schema/aop"       xmlns:tx="http://www.springframework.org/schema/tx"       xmlns:context="http://www.springframework.org/schema/context"       xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"       xsi:schemaLocation="http://www.springframework.org/schema/beans        https://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/context        https://www.springframework.org/schema/context/spring-context.xsd        http://www.springframework.org/schema/tx        https://www.springframework.org/schema/tx/spring-tx.xsd        http://mybatis.org/schema/mybatis-spring        http://mybatis.org/schema/mybatis-spring.xsd        http://www.springframework.org/schema/aop        https://www.springframework.org/schema/aop/spring-aop.xsd">    <context:property-placeholder location="jdbc.properties"/>    <context:component-scan base-package="com.wang"/>    <!--扫描mapper文件-->    <mybatis:scan base-package="com.wang.mapper"/>    <!-- 整个整合就是在围绕sqlSessionFactory -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <!--        <property name="configLocation" value="mybatis-config.xml"/>-->        <property name="mapperLocations" value="mapper/**/*.xml"/>        <property name="configuration">            <bean class="org.apache.ibatis.session.Configuration">                <property name="mapUnderscoreToCamelCase" value="true"/>                <property name="logPrefix" value="ydlclass_"/>            </bean>        </property>    </bean>    <!-- 注入事务管理器 -->    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">        <property name="dataSource" ref="dataSource"/>    </bean>    <!--数据源-->    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">        <property name="url" value="${url}"/>        <property name="driverClassName" value="${driverName}"/>        <property name="username" value="${user}"/>        <property name="password" value="${password}"/>    </bean>    <!-- 声明式事务 -->    <tx:advice id="txAdvice" transaction-manager="transactionManager">        <!-- the transactional semantics... -->        <tx:attributes>            <!-- all methods starting with 'get' are read-only -->            <tx:method name="get*" read-only="true" propagation="SUPPORTS"/>            <tx:method name="select*" read-only="true" propagation="SUPPORTS"/>            <!-- other methods use the default transaction settings (see below) -->            <tx:method name="update*" read-only="false" propagation="REQUIRED"/>            <tx:method name="delete*" read-only="false" propagation="REQUIRED"/>            <tx:method name="insert*" read-only="false" propagation="REQUIRED"/>        </tx:attributes>    </tx:advice>    <!-- ensure that the above transactional advice runs for any execution        of an operation defined by the FooService interface -->    <aop:config>        <aop:pointcut id="point" expression="within(com.wang.service..*)"/>        <aop:advisor advice-ref="txAdvice" pointcut-ref="point"/>    </aop:config>    </beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76

注意: SqlSessionFactory 需要一个 DataSource(数据源)。这可以是任意的 DataSource,只需要和配置其它 Spring 数据库连接一样配置它就可以了。

🍀定义一个mapper和xml

UserMapper.java:

public interface UserMapper {    User getUser(@Param("userId") int userId);}
  • 1
  • 2
  • 3
  • 4

mybatis-config.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>    <typeAliases>        <typeAlias type="com.wang.entity.User" alias="user"/>    </typeAliases></configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

🍀编写一个测试类进行测试

Test.java:

@Slf4jpublic class Test {    public static void main(String[] args) {        ClassPathXmlApplicationContext application = new ClassPathXmlApplicationContext("application.xml");        UserMapper userMapper = application.getBean(UserMapper.class);        User user = userMapper.getUser(10002);        log.info("{}",user);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

MyBatis-Spring的详细内容请参考官网:


后记


👉Java全栈学习路线可参考:,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:,内含最详尽的算法刷题路线指南及相关资料分享~

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发