2、在Spring Boot中整合MyBatis

  1. 添加依赖: 在pom.xml文件中添加以下依赖:

     

    <dependency>
        <groupId>org.springframework.boot</groupId> <!-- Spring Boot Web Starter包含了构建Web应用所需的依赖 -->
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId> <!-- MyBatis Spring Boot Starter整合了MyBatis和Spring Boot -->
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId> <!-- MySQL数据库连接器 -->
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
  2. 配置数据源: 在application.propertiesapplication.yml中配置数据库连接信息,例如:

     

    spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase  <!-- 数据库连接URL -->
    spring.datasource.username=root  <!-- 数据库用户名 -->
    spring.datasource.password=password  <!-- 数据库密码 -->
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver  <!-- 数据库驱动类名 -->
  3. 创建实体类: 创建一个简单的实体类User,用于表示数据库中的用户信息。

     

    public class User {
        private Long id;  // 用户ID
        private String name;  // 用户名
        private Integer age;  // 用户年龄
        // 省略getter和setter方法
    }
  4. 创建Mapper接口: 创建一个Mapper接口UserMapper,定义数据库操作的方法。

     

    public interface UserMapper {
        void insert(User user);  // 插入用户信息
        List<User> findAll();  // 查询所有用户信息
    }
  5. 创建Mapper XML文件: 在resources目录下创建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">  <!-- 指定Mapper接口的命名空间 -->
        <insert id="insert" parameterType="com.example.model.User">  <!-- 插入用户信息的SQL语句 -->
            INSERT INTO user (name, age) VALUES (#{name}, #{age})
        </insert>
        <select id="findAll" resultType="com.example.model.User">  <!-- 查询所有用户信息的SQL语句 -->
            SELECT * FROM user
        </select>
    </mapper>
  6. 配置MyBatis: 创建一个配置类MyBatisConfig,配置MyBatis相关的参数。

     

    @Configuration
    public class MyBatisConfig {
        @Bean
        public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
            SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();  // 创建SqlSessionFactoryBean
            sessionFactory.setDataSource(dataSource);  // 设置数据源
            return sessionFactory.getObject();  // 返回SqlSessionFactory
        }
    }
  7. 使用MyBatis: 在需要使用MyBatis的地方注入UserMapper接口,并使用其中定义的方法进行数据库操作。

     

    @RestController
    public class UserController {
        @Autowired
        private UserMapper userMapper;  // 注入UserMapper接口
    
        @PostMapping("/users")
        public String createUser(@RequestBody User user) {  // 创建用户的API
            userMapper.insert(user);  // 调用insert方法插入用户信息
            return "User created successfully";
        }
    
        @GetMapping("/users")
        public List<User> getAllUsers() {  // 获取所有用户的API
            return userMapper.findAll();  // 调用findAll方法查询所有用户信息
        }
    }

这个例子展示了如何在Spring Boot中整合MyBatis进行数据库操作。通过配置数据源、创建Mapper接口和XML文件,以及使用注解或XML方式进行SQL操作,可以方便地使用MyBatis进行数据库访问。



 

创建Mapper接口、实体类、Mapper XML文件和配置MyBatis是为了实现MyBatis与数据库的交互和映射关系。

  1. Mapper接口: Mapper接口是定义数据库操作方法的接口,通过在接口中定义方法,可以方便地进行数据库的增删改查操作。Mapper接口中的方法名和参数与对应的SQL语句相关联,MyBatis会根据方法名和参数自动生成对应的SQL语句,并执行数据库操作。

  2. 实体类: 实体类是用于表示数据库中的数据的Java对象。通过创建实体类,可以将数据库中的表结构映射到Java对象上,方便在代码中操作和处理数据。

  3. Mapper XML文件: Mapper XML文件是用于定义SQL语句和数据库映射关系的文件。在Mapper XML文件中,可以编写各种SQL语句,包括插入、删除、更新、查询等操作。同时,还可以在XML文件中定义结果集映射关系,将查询结果映射到对应的实体类中。

  4. 配置MyBatis: 配置MyBatis是为了告诉Spring Boot如何使用MyBatis框架。通过配置MyBatis,可以指定数据源、配置SQLSessionFactory等参数,以及指定Mapper接口所在的包路径。这样,Spring Boot在启动时会自动扫描Mapper接口,并将其注册为Bean,方便在代码中进行注入和使用。

通过创建Mapper接口、实体类、Mapper XML文件和配置MyBatis,可以实现数据库操作和数据映射的解耦,提高代码的可维护性和可扩展性。同时,MyBatis提供了灵活的SQL编写和结果集映射方式,可以满足各种复杂的数据库操作需求。



 

  1. @Configuration注解表示这是一个配置类,Spring Boot会自动扫描并加载该类。

  2. @Bean注解表示将SqlSessionFactory对象作为一个Bean交给Spring容器管理。

  3. SqlSessionFactoryBean是MyBatis提供的一个工厂类,用于创建SqlSessionFactory对象。

  4. sessionFactory.setDataSource(dataSource)方法用于设置SqlSessionFactory的数据源,即连接数据库的信息。

  5. sessionFactory.getObject()方法用于获取SqlSessionFactory对象。



     

return sessionFactory.getObject();

这行代码返回一个 SqlSessionFactory 对象,它是 MyBatis 的核心类之一,用于创建 SqlSession 对象,从而进行数据库操作。

SqlSessionFactory 是一个线程安全的对象,它的主要作用是创建和管理 SqlSession 对象。SqlSession 是 MyBatis 中用于执行 SQL 语句的接口,它提供了各种方法来执行数据库操作,如插入、更新、删除、查询等。

在这段代码中,通过调用 sessionFactory.getObject() 方法,会返回一个已经配置好的 SqlSessionFactory 对象,该对象可以被注入到其他需要进行数据库操作的地方,从而实现对数据库的访问。



 

getObject()

SqlSessionFactoryBean 类中的一个方法,用于获取 SqlSessionFactory 对象。

在上面的代码中,sessionFactory 是一个 SqlSessionFactoryBean 对象,通过调用 sessionFactory.getObject() 方法,可以获取到一个已经配置好的 SqlSessionFactory 对象。

SqlSessionFactory 是 MyBatis 的核心类之一,用于创建和管理 SqlSession 对象,从而进行数据库操作。通过配置数据源、映射文件等信息,SqlSessionFactory 可以根据这些配置创建出 SqlSession 对象,从而执行 SQL 语句并与数据库进行交互。

getObject() 方法会根据配置的数据源等信息,创建并返回一个 SqlSessionFactory 对象,以供其他地方使用。


List<User> 是一个泛型类型,表示一个包含多个 User 对象的列表。

parameterType="com.example.model.User"
表示方法的参数类型是 com.example.model.User,也就是接受一个 User 对象作为参数。

resultType="com.example.model.User" 表示方法的返回类型是 com.example.model.User,也就是返回一个 User 对象。

在数据库操作中,parameterType 用于指定传入 SQL 语句的参数类型,而 resultType 用于指定 SQL 语句的返回结果类型。

对于 parameterType="com.example.model.User",可以将一个 User 对象作为参数传入 SQL 语句中,以便进行相关的数据库操作。

对于 resultType="com.example.model.User",执行 SQL 语句后,会返回一个 User 对象作为结果。



!!!!!使用:

 

当你想要使用这个控制器进行插入或查询操作时,你可以通过发送 HTTP 请求来调用相应的 API。以下是一些使用示例:

插入用户信息

你可以使用 HTTP POST 请求来插入用户信息。使用一个类似于 cURL 或者 Postman 的工具,或者在你的应用中发送 HTTP POST 请求。以下是一个使用 cURL 的示例:

curl -X POST -H "Content-Type: application/json" -d '{"name": "Alice", "age": 25}' http://your-app-url/users

这个请求会将一个名为 Alice、年龄为 25 的用户信息插入到数据库中。

查询所有用户信息

你可以使用 HTTP GET 请求来获取所有用户信息。同样地,使用一个类似于 cURL 或者 Postman 的工具,或者在你的应用中发送 HTTP GET 请求。以下是一个使用 cURL 的示例:

curl -X GET http://your-app-url/users

这个请求会返回数据库中所有用户的信息。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Tin9898

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值