Day 7 Spring 整合第三方框架

xml整合第三方框架有两种整合方案:

  • 不需要自定义名空间,不需要使用Spring的配置文件配置第三方框架本身内容,例如: MyBatis;

  • 需要引入第三方框架命名空间,需要使用Spring的配置文件配置第三方框架本身内容,例如: Dubbo.

1 整合MyBatis

Spring整合MyBatis的步骤如下

  • 导入MyBatis整合Spring的相关坐标;

  • 编写Mapper和Mapper.xml;

  • 配置SqlSessionFactoryBeanMapperScannerConfigurer;

  • 编写测试代码

创建一个简单的数据库方便测试,数据如下:

创建pojo

public class User {
    private int id;
    private String username;
    private String password;

    public void setId(int id) {
        this.id = id;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

创建mapper

public interface UserMapper {
    /**
     *
     * @return
     */
    List<User> findAll();
}

创建mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.msf.mapper.UserMapper">
    <select id="findAll" resultType="cn.msf.pojo.User">
        select * from tb_user
    </select>
</mapper>

spring的xml文件

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
      <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
      <property name="username" value="xxxx"></property>
      <property name="password" value="xxxx"></property>
      <property name="url" value="jdbc:mysql://localhost:3307/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"></property>
   </bean>
   <!--配置SqlSessionFactoryBean,将SqlSessionFactoryBean放到容器-->
   <bean class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="dataSource" ref="dataSource"></property>
   </bean>
   <!--MapperScannerConfigurer,扫描指定的包将mapper对象放到容器-->
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
      <property name="basePackage" value="cn.msf.mapper"></property>
   </bean>

   <bean id="userService" class="cn.msf.service.impl.UserServiceImpl">
      <property name="userDao" ref="userDao"></property>
      <property name="userMapper" ref="userMapper"></property>
<!--      <property name="username" value="msf"></property>-->
   </bean>

测试代码:

原理:

我们在spring的xml文件中注入了一个SqlSessionFactoryBean和一个扫描mapper的 MapperScannerConfigurer,SqlSessionFactoryBean一旦被实例化,就开始扫描mapper病痛动态代理产生Mapper的实现类存储到Spring容器中。

  • SglSessionFactoryBean: 需要进行配置,用于提供SqlSessionFactory;

  • MapperScannerConfigurer: 需要进行配置,用于扫描指定mapper注册成BeanDefinition;

  • ClassPathMapperScanner: definitionsetAutowireMode(2) 修改了自动注入状态,所以MapperFactoryBean中的setSqlSessionFactory会自动注入进去。

  • MapperFactoryBean: Mapper的FactoryBean,获得指定Mapper时调用getObject方法

  • 最终调用sqlsession.getmapper方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兜兜转转m

一毛钱助力博主实现愿望

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值