你知道Spring是如何整合MyBatis的吗?

这篇具有很好参考价值的文章主要介绍了你知道Spring是如何整合MyBatis的吗?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring 和 MyBatis 是两个在 Java 开发中广泛应用的优秀框架。Spring 提供了强大的容器和一系列的特性,可以方便地进行依赖注入、AOP 编程等操作。MyBatis 是一个轻量级的持久层框架,它提供了灵活的 SQL 映射和数据库访问功能。在实际项目中,将 Spring 和 MyBatis 整合在一起使用,可以发挥它们各自的优势,简化开发流程,提高系统的可维护性和扩展性。本文将介绍如何使用 Spring 整合 MyBatis,以及一些实践中的技巧和注意事项。

前置条件

在开始本文之前,需要老铁们具备以下基础知识:

  • Java 开发基础,如面向对象编程、Java 类库等。
  • Spring 框架的基本概念,包括 IoC(控制反转)和 DI(依赖注入)等。
  • MyBatis 框架的基本概念,包括 XML 配置文件、Mapper 接口和 SQL 映射等。

整合 Spring 和 MyBatis

整合 Spring 和 MyBatis 可以通过两种方式实现:使用 Spring Boot 或者手动配置。下面将分别介绍这两种方式的具体实现方法。

使用 Spring Boot 整合

Spring Boot 提供了快速构建应用的能力,并且默认集成了 MyBatis。通过使用 Spring Boot,我们可以简化整合的过程,并且减少大量的配置。下面是使用 Spring Boot 整合的步骤:

  1. 创建 Spring Boot 项目。

    可以使用 Spring Initializr(https://start.spring.io/)来创建一个新的 Spring Boot 项目。在创建项目时,选择适当的依赖,包括 Spring Web、Spring Data JDBC 和 MyBatis 等。

  2. 配置数据库连接。

    application.propertiesapplication.yml 文件中配置数据库连接信息,包括数据库 URL、用户名、密码等。

    spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
    spring.datasource.username=root
    spring.datasource.password=123456
    
    
  3. 创建实体类和 Mapper 接口。

    创建与数据库表对应的实体类,并使用注解 @Table@Column 来定义表名和字段名。同时,创建对应的 Mapper 接口,并使用注解 @Mapper 来标识该接口。

    @Table("user")
    public class User {
        @Column("id")
        private Long id;
    
        @Column("name")
        private String name;
    
        // getter and setter
    }
    
    @Mapper
    public interface UserMapper {
        User selectById(Long id);
        void insert(User user);
        void update(User user);
        void delete(Long id);
    }
    
    
  4. 编写 MyBatis 的 XML 配置文件。

在资源目录下创建 mybatis-config.xml 文件,用于配置 MyBatis 的一些全局属性和设置。

<?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="logImpl" value="STDOUT_LOGGING"/>
    </settings>
</configuration>

在配置文件中,可以设置一些全局属性,如日志实现类等。

  1. 编写 SQL 映射文件。

    在资源目录下创建 UserMapper.xml 文件,用于编写 SQL 映射语句。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.example.mapper.UserMapper">
        <select id="selectById" resultType="com.example.entity.User">
            SELECT * FROM user WHERE id = #{id}
        </select>
        <insert id="insert" parameterType="com.example.entity.User">
            INSERT INTO user(name, age) VALUES (#{name}, #{age})
        </insert>
        <update id="update" parameterType="com.example.entity.User">
            UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
        </update>
        <delete id="delete" parameterType="java.lang.Long">
            DELETE FROM user WHERE id = #{id}
        </delete>
    </mapper>
    
    

    在 SQL 映射文件中,通过 <mapper> 标签指定了对应的 Mapper 接口,并编写了各种 SQL 语句。

  2. 配置 Spring Boot 应用。

    在 Spring Boot 项目的主类上使用注解 @MapperScan 来扫描 Mapper 接口所在的包,并将其注册为 Spring 的 Bean。

    @SpringBootApplication
    @MapperScan("com.example.mapper")
    public class MyApplication {
        public static void main(String[] args) {
            SpringApplication.run(MyApplication.class, args);
        }
    }
    
    

    在上述示例中,使用了 @MapperScan 注解来指定 Mapper 接口所在的包。

  3. 使用 MyBatis。

    在 Service 层或 Controller 层中注入 Mapper 接口,并直接使用其方法进行数据库操作。

    @Service
    public class UserService {
        @Autowired
        private UserMapper userMapper;
    
        public User getUserById(Long id) {
            return userMapper.selectById(id);
        }
    
        public void addUser(User user) {
            userMapper.insert(user);
        }
    
        public void updateUser(User user) {
            userMapper.update(user);
        }
    
        public void deleteUser(Long id) {
            userMapper.delete(id);
        }
    }
    
    

    在上述示例中,通过 @Autowired 注解将 UserMapper 接口注入到 UserService 中,然后在方法中直接调用 Mapper 的方法进行数据库操作。

手动配置整合

如果不使用 Spring Boot,也可以手动配置 Spring 和 MyBatis 的整合。下面是手动配置的步骤:

  1. 导入依赖

    在项目的构建文件中,添加 Spring 和 MyBatis 的依赖。可以使用 Maven 或 Gradle 等构建工具进行依赖管理。

  2. 配置数据源

    在 Spring 配置文件中,配置数据库连接信息和数据源。可以使用 Spring 提供的数据源,如 org.springframework.jdbc.datasource.DriverManagerDataSource

    <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/mydatabase"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>
    
    
  3. 配置事务管理器

    在 Spring 配置文件中,配置事务管理器,用于管理数据库事务。可以使用 Spring 提供的事务管理器,如 org.springframework.jdbc.datasource.DataSourceTransactionManager

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    
    
  4. 配置 MyBatis 的 SqlSessionFactory

    在 Spring 配置文件中,配置 MyBatis 的 SqlSessionFactory。可以使用 Spring 提供的 org.mybatis.spring.SqlSessionFactoryBean

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="mapperLocations" value="classpath*:mapper/*.xml"/>
    </bean>
    
    

    在上述配置中,dataSource 属性指定了数据源,configLocation 属性指定了 MyBatis 的配置文件路径,mapperLocations 属性指定了 Mapper 接口的 XML 配置文件路径。

  5. 配置 MapperScannerConfigurer

    在 Spring 配置文件中,配置 MapperScannerConfigurer,用于扫描 Mapper 接口并将其注册为 Spring 的 Bean。

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

    在上述配置中,basePackage 属性指定了 Mapper 接口所在的包路径。

  6. 编写 Mapper 接口和 SQL 语句

    编写 Mapper 接口,该接口需要继承 MyBatis 的 Mapper 接口,并定义对应的 SQL 语句和参数。

    public interface UserMapper extends Mapper<User> {
        @Select("SELECT * FROM user WHERE id = #{id}")
        User selectById(@Param("id") Long id);
    
        @Insert("INSERT INTO user(name, age) VALUES (#{name}, #{age})")
        @Options(useGeneratedKeys = true, keyProperty = "id")
        void insert(User user);
    
        @Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}")
        void update(User user);
    
        @Delete("DELETE FROM user WHERE id= #{id}")
    		void delete(@Param("id") Long id);
    	}
    
    

    在上述示例中,使用了 MyBatis 的注解来定义 SQL 语句,并使用 @Param 注解指定参数的名称。

    1. 配置事务

    在需要进行事务管理的方法上添加 @Transactional 注解,以实现事务的控制。

    @Service
    public class UserService {
        @Autowired
        private UserMapper userMapper;
    
        @Transactional
        public User getUserById(Long id) {
            return userMapper.selectById(id);
        }
    
        @Transactional
        public void addUser(User user) {
            userMapper.insert(user);
        }
    
        @Transactional
        public void updateUser(User user) {
            userMapper.update(user);
        }
    
        @Transactional
        public void deleteUser(Long id) {
            userMapper.delete(id);
        }
    }
    

    在上述示例中,使用了 @Transactional 注解来标识需要进行事务管理的方法。

    1. 使用 Spring 容器

      在应用启动时,通过加载 Spring 配置文件,初始化 Spring 容器,并从容器中获取相应的 Bean 进行操作。

      public class Application {
          public static void main(String[] args) {
              ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
              UserService userService = context.getBean(UserService.class);
      
              // 使用 userService 进行数据库操作
          }
      }
      
      

      在上述示例中,通过加载 Spring 配置文件 applicationContext.xml 初始化 Spring 容器,并从容器中获取 UserService 的实例进行数据库操作。

    总结

    本文介绍了如何使用 Spring 整合 MyBatis,并提供了两种方法:使用 Spring Boot 和手动配置。使用 Spring Boot 可以快速搭建整合环境,减少配置工作;而手动配置则更加灵活,适用于一些特殊需求的场景。通过整合 Spring 和 MyBatis,我们可以充分发挥它们的优势,提高开发效率和系统的可维护性。希望本文对于读者在实践中整合 Spring 和 MyBatis 有所帮助。文章来源地址https://www.toymoban.com/news/detail-458075.html

到了这里,关于你知道Spring是如何整合MyBatis的吗?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 你知道Unity IoC Container是如何创建对象的吗?

    ty是微软PP推出的一个开源的IoC框架,最新的官方版本是2.0。Unity之前的版本建立在一个称为ObjectBuild的组件上,熟悉EnterLib的读者,相信对ObjectBuild不会感到陌生。对于EnterLib 5.0之前的版本,ObjectBuild可以说是所有Application Block的基石。ObjectBuild提供一种扩展、可定制的对象创建

    2024年02月09日
    浏览(33)
  • 【Spring教程31】SSM框架整合实战:从零开始学习SSM整合配置,如何编写Mybatis SpringMVC JDBC Spring配置类

    欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《Rest风格简介与RESTful入门》 前面我们已经把Mybatis、Spring和SpringMVC三个框架

    2024年02月04日
    浏览(72)
  • AIGC大模型必备知识——LLM ,你知道它是如何训练的吗?小白必读深度好文

    Look!👀我们的大模型商业化落地产品 📖更多AI资讯请👉🏾关注 Free三天集训营助教在线为您火热答疑👩🏼‍🏫 近年来,人工智能(AI)领域经历了令人瞩目的增长,尤其是自然语言处理(NLP)。你知道是什么推动了NLP领域的这种飞速发展吗?没错,那就是大型语言模型

    2024年01月25日
    浏览(44)
  • 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)
  • 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整合MyBatis(详细步骤)

    Spring与Mybatis的整合,大体需要做两件事, 第一件事是:Spring要管理MyBatis中的SqlSessionFactory 第二件事是:Spring要管理Mapper接口的扫描 具体的步骤为: 步骤1:项目中导入整合需要的jar包 步骤2:创建Spring的主配置类 步骤3:创建数据源的配置类 在配置类中完成数据源的创建 步骤4:主配

    2024年02月13日
    浏览(41)
  • Spring Boot整合MyBatis

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

    2024年02月06日
    浏览(52)
  • Spring Boot 整合 Mybatis

    导入依赖的时候,需要根据自己所使用的Spring Boot和MySQL的版本而定。 我这里使用的是MySQL数据库。 首先创建一个mybatis_learn的数据库。然后创建一个student的表。 对应的,要实现一个Java的实体类,来对应数据库的表。 创建如图结构的各个包和文件。 这个接口是对应Mybatis的

    2024年02月03日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包