Spring整合Mybatis方式一 - 常规整合 - 注册映射器

这篇具有很好参考价值的文章主要介绍了Spring整合Mybatis方式一 - 常规整合 - 注册映射器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前置工作

  • 导包(mybatis-spring、mysql-connector-java、mybatis、spring-webmvc等)

  • 实体类

  • DAO层两个文件(接口、xml文件);Service层的接口

编写Spring管理mybatis的xml-spring-dao.xml

核心代码(两种方式实现)

第一种:xml

<!-- 将会话工厂对象托管给spring -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
</bean>

<!-- 注册映射器:将映射器接口托管到Spring中 -->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
  <property name="sqlSessionFactory" ref="sqlSessionFactory" />
  <property name="mapperInterface" value="com.ylzl.mapper.UserMapper" />
</bean>
<!--    MapperFactoryBean对象 负责 SqlSession 的创建和关闭,
如果使用了 Spring 事务,当事务完成时,session 将会被提交或回滚。
最终任何异常都会被转换成 Spring 的 DataAccessException 异常-->
<!--    mybatis映射器接口(如:interface UserMapper):sql部分可以使用mybatis的xml配置,与接口在同一路径下,会被 MapperFactoryBean自动解析-->

第二种:annotation方式

点击查看代码
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
  SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
  factoryBean.setDataSource(dataSource());
  return factoryBean.getObject();
}

@Bean
public MapperFactoryBean<UserMapper> userMapper() throws Exception {
    MapperFactoryBean<UserMapper> factoryBean = new MapperFactoryBean<>(UserMapper.class);
    factoryBean.setSqlSessionFactory(sqlSessionFactory());
    return factoryBean;
}

完整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:context="http://www.springframework.org/schema/context"
       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">

    <context:annotation-config/>

<!--    使用Spring配置dataSource 相当于MyBatis配置文件的<environments>-->
<!--    需要spring-jdbc包-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/ssmbuild"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>

<!--    配置SqlSessionFactoryBean 等同于SqlSessionFactory
        做读取数据源以及注册mapper.xml的工作-->
<!-- SqlSessionFactoryBean会调用类中的getObject()方法,返回SqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:com/ylzl/mapper/BookMapper.xml"/>
    </bean>
<!--    获得Mapper代理对象 等同于getMapper()-->
    <bean id="BookMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="sqlSessionFactory" ref="sqlSessionFactory" />
        <property name="mapperInterface" value="com.ylzl.mapper.BookMapper" />
    </bean>

<!--    注册employeeServiceImpl-->
    <bean id="bookServiceImpl" class="com.ylzl.service.impl.BookServiceImpl"/>
</beans>

重新编写Service实现类

public class BookServiceImpl implements BookService{
    private BookMapper bookMapper;

    @Autowired //需要spring-aop包
    public BookServiceImpl(BookMapper bookMapper) {
        this.bookMapper = bookMapper;
    }

    @Override
    public Book getBookById(Integer bookID) {
        return bookMapper.getBookById(bookID);
    }
}

测试

ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
BookService bookServiceImpl = context.getBean("BookServiceImpl", BookService.class);
Book book = bookServiceImpl.getBookById(2);
System.out.println(book);

改进注册映射器方式:使用发现映射器方式

MapperFactoryBean注册映射器的最大问题,就是需要一个个注册所有的映射器,而实际上mybatis-spring提供了扫描包下所有映射器接口的方法。

注意:以下两种配置方法,均可替换上述MapperFactoryBean配置,而其余代码与配置不变

方式一:配置扫描器标签

1.与上面配置MapperFactoryBean不同,该配置无需注入SqlSessionFactory,它会自动匹配已有的会话工厂bean

2.如果配置了多个DataSource,也就是多个sqlSessionFactory时,可以使用factory-ref参数指定需要的会话工厂

<mybatis:scan base-package="com.ylzl.dao" factory-ref="sqlSessionFactory" />

<!-- annotation方式-注解配置类:
@MapperScan(basePackages = "com.ylzl.dao", sqlSessionFactoryRef = "sqlSessionFactory") -->
    
<!-- 省略其他... -->

方式二:MapperScannerConfigurer类

1.与上面标签的功能差不多,同样是扫描基准包,自动注入会话工厂

2.如果要更换注入的会话工厂,不同于常用的ref引入bean,而是使用value指定bean名,且属性是sqlSessionFactoryBeanName

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
     <property name="basePackage" value="com.ylyl.mapper" />
     <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>

annotation方式

@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
    MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
    mapperScannerConfigurer.setBasePackage("com.ylzl.dao");
    mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
    return mapperScannerConfigurer;
}

图片:
Spring整合Mybatis方式一 - 常规整合 - 注册映射器文章来源地址https://www.toymoban.com/news/detail-843845.html

到了这里,关于Spring整合Mybatis方式一 - 常规整合 - 注册映射器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【spring源码系列-04】注解方式启动spring时refresh的前置工作

    Spring源码系列整体栏目 内容 链接地址 【一】spring源码整体概述 https://blog.csdn.net/zhenghuishengq/article/details/130940885 【二】通过refresh方法剖析IOC的整体流程 https://blog.csdn.net/zhenghuishengq/article/details/131003428 【三】xml配置文件启动spring时refresh的前置工作 https://blog.csdn.net/zhenghuishen

    2024年02月08日
    浏览(39)
  • Spring之Aop切面---日志收集(环绕处理、前置处理方式)--使用/教程/实例

    本文章介绍采用两种不同方式处理----系统登录、系统退出登录两种场景日志。 环绕处理系统登录日志 前置处理系统退出登录日志 系统登录日志类LoginLogEntity .java 1、自定义注解类LoginLogAop.class 2、切面处理类LogoutLogAspect.java 1、自定义注解类LogoutLogAop.class 2、切面处理类Logout

    2024年02月13日
    浏览(40)
  • Spring整合Mybatis、Spring整合JUnit

    🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 1.3.1jdbc配置文件 1.3.2jdbc配置类及spring配置类 1.3.3数据库操作类 1.3.4测试类 1.3.5运行结果 关于Spring整合的相关步骤就介绍完了,欢迎各位点赞+关注!!!

    2024年02月14日
    浏览(56)
  • Mybatis Plus之DQL(条件查询方式、查询投影、查询条件设定、字段映射与表名映射)

    增删改查四个操作中,查询是非常重要的也是非常复杂的操作,这块需要我们重点学习下,这节我们主要学习的内容有: 条件查询方式 查询投影 查询条件设定 字段映射与表名映射 1.1 条件查询的类 MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的

    2024年02月05日
    浏览(59)
  • 【Spring 篇】深入探讨MyBatis映射文件中的动态SQL

    MyBatis,这个名字在Java开发者的世界中犹如一道光芒,照亮着持久层操作的道路。而在MyBatis的映射文件中,动态SQL则是一个让人爱-hate的存在。有时候,你感叹它的灵活性,有时候,你可能会为它的繁琐而头痛。但别担心,我们将在本文中一起揭开动态SQL的神秘面纱,带你领

    2024年01月24日
    浏览(59)
  • Spring 整合 Mybatis -- Spring入门(七)

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码可以在我主页的资源里找到,如果在学习的

    2024年02月16日
    浏览(45)
  • Spring和mybatis整合

    1. 导入pom依赖 1.1 添加spring相关依赖(5.0.2.RELEASE)        spring-core        spring-beans        spring-context        spring-orm        spring-tx        spring-aspects        spring-web 1.2 添加mybatis相关依赖        mybatis核心:mybatis(3.4.5)        Mybatis分页:pagehelper(5.1.2) 1.3 spring整合

    2024年02月11日
    浏览(41)
  • 八、Spring 整合 MyBatis

    1、 将 Mybatis 的 DataSource (数据来源)的创建和管理交给 Spring Ioc 容器来做,并使用第三方数据库连接池来(Druid,C3P0等)取代 MyBatis 内置的数据库连接池 2、将 Mybatis 的 SqlSessionFactroy 交给 Spring Ioc 创建和管理,使用 spring-mybatis 整合jar包中提供的 SqlSessionFactoryBean 类代替项目中的

    2024年02月14日
    浏览(47)
  • Spring Boot整合MyBatis

    在开发中,通常会涉及到对数据库的数据进行操作,Spring Boot在简化项目开发以及实现自动化配置的基础上,对关系型数据库和非关系型数据库的访问操作都提供了非常好的整合支持。 Spring Boot默认采用整合SpringData的方式统一处理数据访问层,通过添加大量自动配置,引入各

    2024年02月06日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包