mybatis-spring整合的三种(逐渐优化)方案

简介: mybatis-spring整合的三种(逐渐优化)方案

第一种就是作者之前写过的,就是通过编写是实现类然后在实现类里面实现接口的方法,然后在applicationcontex.xml文件中注册创建一个该实现类的bean对象,然后在该对象中注入SQLSession的以来即可

<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
       http://www.springframework.org/schema/aop 
       http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.1.xsd
       ">
       <!-- 读取数据库的相关配置文件 -->
       <context:property-placeholder location="classpath:config/jdbc.properties"/>
       <!-- 创建数据源DataSource -->
       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
       <property name="url" value="${jdbc.url}"></property>
       <property name="driverClassName" value="${jdbc.driverClass}"></property>
       <property name="username" value="${jdbc.user}"></property>
       <property name="password" value="${jdbc.password}"></property>
       <!-- 最大连接数 -->
       <property name="maxActive" value="10"></property>
       <!-- 最大空闲数 -->
       <property name="maxIdle" value="5"></property>
       </bean>
       <!-- 创建一个SqlSessionFactory对象 -->
       <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       <!-- 关联连接池 -->
       <property name="dataSource" ref="dataSource"></property>
       <!--加载sql映射文件 -->
       <property name="mapperLocations" value="classpath:mapper/*.xml"></property>       
       </bean>
       <!-- 创建一个CustomerMapperImpl对象,然后向里面注入SQLSessionFactory的对象 -->
       <bean id="customerMapper" class="cn.ssm1234.dao.impl.CustomerMapperimpl">
       <!-- 关联或者输入sqlSeesionFactory -->
       <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
       </bean>
</beans>

第二种简化了操作实现类的操作,该方法中,我们直接注册创建mapper的接口的一个bean对象,然后向里面注入SQLSession的以来即可

<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
       http://www.springframework.org/schema/aop 
       http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.1.xsd
       ">
       <!-- 读取数据库的相关配置文件 -->
       <context:property-placeholder location="classpath:config/jdbc.properties"/>
       <!-- 创建数据源DataSource -->
       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
       <property name="url" value="${jdbc.url}"></property>
       <property name="driverClassName" value="${jdbc.driverClass}"></property>
       <property name="username" value="${jdbc.user}"></property>
       <property name="password" value="${jdbc.password}"></property>
       <!-- 最大连接数 -->
       <property name="maxActive" value="10"></property>
       <!-- 最大空闲数 -->
       <property name="maxIdle" value="5"></property>
       </bean>
       <!-- 创建一个SqlSessionFactory对象 -->
       <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       <!-- 关联连接池 -->
       <property name="dataSource" ref="dataSource"></property>
       <!--加载sql映射文件 -->
       <property name="mapperLocations" value="classpath:mapper/*.xml"></property>       
       </bean>
       <!-- 配置Mapper接口 -->
       <bean id="customerMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
       <!-- 关联Mapper接口 -->
       <property name="mapperInterface" value="cn.ssm1234.dao.CustomerMapper"></property>
       <!-- 关联SqlSessionfactory -->
       <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
       </bean>
</beans>

第三种就是最简便,这里我们可以直接创建一个mapper接口的扫描器,这样我们只要定义扫描器所扫描的包,那样我们就可以一次性全部扫描出我们要用马屁拍二接口,而不需要没创建一个mapper接口就去创建该mapper接口的对象

<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
       http://www.springframework.org/schema/aop 
       http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.1.xsd
       ">
       <!-- 读取数据库的相关配置文件 -->
       <context:property-placeholder location="classpath:config/jdbc.properties"/>
       <!-- 创建数据源DataSource -->
       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
       <property name="url" value="${jdbc.url}"></property>
       <property name="driverClassName" value="${jdbc.driverClass}"></property>
       <property name="username" value="${jdbc.user}"></property>
       <property name="password" value="${jdbc.password}"></property>
       <!-- 最大连接数 -->
       <property name="maxActive" value="10"></property>
       <!-- 最大空闲数 -->
       <property name="maxIdle" value="5"></property>
       </bean>
       <!-- 创建一个SqlSessionFactory对象 -->
       <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       <!-- 关联连接池 -->
       <property name="dataSource" ref="dataSource"></property>
       <!--加载sql映射文件 -->
       <property name="mapperLocations" value="classpath:mapper/*.xml"></property>       
       </bean>
       <!-- Mapper接口的扫描器 -->
       <!--如果使用Mapper接口包扫描,那每个Mapper接口在spring容器中的id名称为类名:例如CustomerMapper就叫做customerMapper(类名首字母小写) 
        -->
       <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <!-- 配置Mapper接口包所在的路径 -->
       <property name="basePackage" value="cn.ssm1234.dao"></property>
       </bean>
       <!-- 开启Spring的IOC注解扫描 -->
       <context:component-scan base-package="cn.ssm1234"></context:component-scan>
</beans>

这里我们总结一下,在mybatis与Spring的整合过程中,必须的两步就是

1.连接数据库的相关操作

2.配置SQLSession对象

其次就是上述的三种整合方案选择。

相关文章
|
1天前
|
JSON Java API
利用Spring Cloud Gateway Predicate优化微服务路由策略
Spring Cloud Gateway 的路由配置中,`predicates`​(断言)用于定义哪些请求应该匹配特定的路由规则。 断言是Gateway在进行路由时,根据具体的请求信息如请求路径、请求方法、请求参数等进行匹配的规则。当一个请求的信息符合断言设置的条件时,Gateway就会将该请求路由到对应的服务上。
93 69
利用Spring Cloud Gateway Predicate优化微服务路由策略
|
1月前
|
缓存 Java Spring
实战指南:四种调整 Spring Bean 初始化顺序的方案
本文探讨了如何调整 Spring Boot 中 Bean 的初始化顺序,以满足业务需求。文章通过四种方案进行了详细分析: 1. **方案一 (@Order)**:通过 `@Order` 注解设置 Bean 的初始化顺序,但发现 `@PostConstruct` 会影响顺序。 2. **方案二 (SmartInitializingSingleton)**:在所有单例 Bean 初始化后执行额外的初始化工作,但无法精确控制特定 Bean 的顺序。 3. **方案三 (@DependsOn)**:通过 `@DependsOn` 注解指定 Bean 之间的依赖关系,成功实现顺序控制,但耦合性较高。
实战指南:四种调整 Spring Bean 初始化顺序的方案
|
23天前
|
缓存 NoSQL Java
Spring Boot中的分布式缓存方案
Spring Boot提供了简便的方式来集成和使用分布式缓存。通过Redis和Memcached等缓存方案,可以显著提升应用的性能和扩展性。合理配置和优化缓存策略,可以有效避免常见的缓存问题,保证系统的稳定性和高效运行。
41 3
|
1月前
|
缓存 监控 Java
|
5月前
|
缓存 监控 Java
优化Spring Boot应用的数据库访问性能
优化Spring Boot应用的数据库访问性能
|
3月前
|
前端开发 Java Spring
【非降版本解决】高版本Spring boot Swagger 报错解决方案
【非降版本解决】高版本Spring boot Swagger 报错解决方案
|
3月前
|
存储 数据采集 Java
Spring Boot 3 实现GZIP压缩优化:显著减少接口流量消耗!
在Web开发过程中,随着应用规模的扩大和用户量的增长,接口流量的消耗成为了一个不容忽视的问题。为了提升应用的性能和用户体验,减少带宽占用,数据压缩成为了一个重要的优化手段。在Spring Boot 3中,通过集成GZIP压缩技术,我们可以显著减少接口流量的消耗,从而优化应用的性能。本文将详细介绍如何在Spring Boot 3中实现GZIP压缩优化。
453 6
|
2月前
|
SQL Java 数据库连接
Mybatis中传入不同类型的值处理方案
这篇文章讲述了在Mybatis中如何处理传入不同类型参数的情况,包括单个值、列表及Map等,并提供了相应的XML映射和Java代码示例。
103 0
|
2月前
|
存储 NoSQL Java
Spring Boot项目中使用Redis实现接口幂等性的方案
通过上述方法,可以有效地在Spring Boot项目中利用Redis实现接口幂等性,既保证了接口操作的安全性,又提高了系统的可靠性。
59 0
|
5月前
|
存储 缓存 安全
Spring初始化加速的思路和方案问题之手动指定要异步初始化的bean中的问题如何解决
Spring初始化加速的思路和方案问题之手动指定要异步初始化的bean中的问题如何解决