当前位置: 首页 > article >正文

Spring Boot项目中使用MyBatis

在Spring Boot项目中使用MyBatis可以极大地简化配置过程,因为Spring Boot提供了很多自动化配置的功能。以下是一个简单的指南,介绍如何在Spring Boot项目中使用MyBatis。

1. 添加依赖

首先,你需要在pom.xml文件中添加MyBatis和MyBatis-Spring-Boot-Starter的依赖。MyBatis-Spring-Boot-Starter是MyBatis官方提供的用于简化Spring Boot项目配置的启动器。

<dependencies>  
    <!-- MyBatis-Spring-Boot-Starter -->  
    <dependency>  
        <groupId>org.mybatis.spring.boot</groupId>  
        <artifactId>mybatis-spring-boot-starter</artifactId>  
        <version>2.2.0</version>  
    </dependency>  
  
    <!-- MySQL Connector (如果使用MySQL数据库) -->  
    <dependency>  
        <groupId>mysql</groupId>  
        <artifactId>mysql-connector-java</artifactId>  
        <scope>runtime</scope>  
    </dependency>  
  
    <!-- 其他依赖,如Spring Boot Starter等 -->  
</dependencies>


2. 配置数据源

在Spring Boot中,你可以通过application.propertiesapplication.yml文件来配置数据源。以下是一个使用application.yml配置数据源的示例:

spring:  
  datasource:  
    url: jdbc:mysql://localhost:3306/yourdatabase?useSSL=false&serverTimezone=UTC  
    username: yourusername  
    password: yourpassword  
    driver-class-name: com.mysql.cj.jdbc.Driver  
  
mybatis:  
  mapper-locations: classpath:mappers/*.xml  # 指定Mapper XML文件的位置  
  type-aliases-package: com.example.demo.model  # 指定别名包,用于扫描实体类


3. 创建Mapper接口和XML映射文件

Mapper接口用于定义数据库操作方法,而XML映射文件则包含具体的SQL语句。

UserMapper.java

package com.example.demo.mapper;  
  
import com.example.demo.model.User;  
import org.apache.ibatis.annotations.Mapper;  
import org.apache.ibatis.annotations.Select;  
  
@Mapper  
public interface UserMapper {  
    @Select("SELECT * FROM users WHERE id = #{id}")  
    User getUserById(int id);  
  
    // 你也可以不使用注解,而是在XML文件中定义SQL语句  
}
UserMapper.xml(如果不使用注解,则需要在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.demo.mapper.UserMapper">  
    <select id="getUserById" parameterType="int" resultType="com.example.demo.model.User">  
        SELECT * FROM users WHERE id = #{id}  
    </select>  
</mapper>
注意:如果你使用了@Mapper注解,并且Spring Boot能够扫描到你的Mapper接口,那么你就不需要在XML文件中定义SQL语句了。但是,如果你更喜欢使用XML配置,可以省略@Select等注解,并在XML文件中定义所有的SQL语句。

4. 创建实体类

创建一个与数据库表对应的Java实体类。

User.java

package com.example.demo.model;  
  
public class User {  
    private int id;  
    private String name;  
    private String email;  
  
    // Getters and Setters  
    // ...  
}


5. 使用Mapper进行数据库操作

你可以通过注入Mapper接口的方式来进行数据库操作。Spring Boot会自动为你创建Mapper接口的实例,并将其注入到你的Service或Controller中。

UserService.java

package com.example.demo.service;  
  
import com.example.demo.mapper.UserMapper;  
import com.example.demo.model.User;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.stereotype.Service;  
  
@Service  
public class UserService {  
  
    @Autowired  
    private UserMapper userMapper;  
  
    public User getUserById(int id) {  
        return userMapper.getUserById(id);  
    }  
}


UserController.java

package com.example.demo.controller;  
  
import com.example.demo.model.User;  
import com.example.demo.service.UserService;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.PathVariable;  
import org.springframework.web.bind.annotation.RestController;  
  
@RestController  
public class UserController {  
  
    @Autowired  
    private UserService userService;  
  
    @GetMapping("/users/{id}")  
    public User getUserById(@PathVariable int id) {  
        return userService.getUserById(id);  
    }  
}


6. 运行项目

现在,你可以运行你的Spring Boot项目,并通过访问http://localhost:8080/users/{id}来获取用户信息了。

总结

在Spring Boot项目中使用MyBatis可以极大地简化配置过程,并且Spring Boot提供了很好的集成支持。你只需要添加必要的依赖,配置数据源,然后创建Mapper接口、XML映射文件和实体类,就可以轻松地进行数据库操作了。


http://www.kler.cn/a/331088.html

相关文章:

  • 路过石岩浪心古村
  • vue2 elementui if导致的rules判断失效
  • 微软 CEO 萨提亚・纳德拉:回顾过去十年,展望 AI 时代的战略布局
  • 【ETCD】【实操篇(十五)】etcd集群成员管理:如何高效地添加、删除与更新节点
  • Oracle中listagg与wm_concat函数的区别
  • 【超级详细】七牛云配置阿里云域名详细过程记录
  • 利用vue-capper封装一个可以函数式调用图片裁剪组件
  • 在 Qt 项目中使用 spdlog 的全攻略
  • 【硬件模块】SG90舵机模块
  • Veritus netbackup 管理控制台无法连接:未知错误
  • 【力扣 | SQL题 | 每日三题】力扣1264, 1113, 1098, 1082
  • CSP-J 2023 T1小苹果 T2公路
  • 一、Spring Boot集成Spring Security之自动装配
  • Gazebo安装,ubuntu22
  • Linux云计算 |【第四阶段】RDBMS1-DAY3
  • django创建一个新的应用
  • 什么是 Angular 开发中的 Dumb components
  • PowerBI概述
  • 滚雪球学Oracle[4.3讲]:PL/SQL控制结构与循环的深入解析与优化
  • python三局两胜游戏
  • 点评项目-3-登录成功后加载登录页面
  • Java String底层源码分析
  • 项目管理系统如何实现项目申报流程自动化?
  • 【redis-04】Redisson实现分布式锁实战和源码剖析
  • 基于ESP8266—AT指令连接阿里云+MQTT透传数据(3)
  • 2022浙江省赛G I M