使用Spring Boot和MyBatis访问数据库

news2025/1/10 23:41:54

使用Spring Boot和MyBatis访问数据库

Spring Boot和MyBatis是Java开发中非常流行的框架,它们可以帮助你轻松地构建和管理数据库应用程序。本文将介绍如何使用Spring Boot和MyBatis访问数据库,并提供示例代码以帮助你入门。

在这里插入图片描述

准备工作

在开始之前,确保你已经安装了以下软件:

  1. Java Development Kit (JDK)
  2. Spring Boot
  3. MyBatis
  4. 数据库(本文以MySQL为例)

如果你还没有安装这些软件,可以访问官方网站并按照它们的安装指南进行安装。

创建Spring Boot项目

首先,我们需要创建一个Spring Boot项目。你可以使用Spring Initializer来创建一个基本的Spring Boot项目,也可以使用IDE(如IntelliJ IDEA或Eclipse)来创建。

使用Spring Initializer创建项目

访问 Spring Initializer 网站,在这个网站上你可以选择项目的依赖和设置。对于本文,我们将选择以下依赖:

  • Spring Web
  • Spring Boot DevTools
  • MyBatis Framework
  • MySQL Driver(如果你使用其他数据库,选择相应的驱动)

点击"Generate"按钮,下载生成的项目压缩包并解压它。

使用IDE创建项目

如果你使用IDE来创建项目,可以按照以下步骤:

  1. 打开你的IDE,选择创建新的Spring Boot项目。
  2. 选择项目的名称和位置。
  3. 在项目设置中选择Spring Web、Spring Boot DevTools、MyBatis Framework和MySQL Driver等依赖。
  4. 完成项目创建。

配置数据库连接

接下来,我们需要配置数据库连接。在Spring Boot项目中,数据库连接配置通常在application.propertiesapplication.yml文件中完成。在项目的src/main/resources目录下找到这个文件并添加以下配置:

# 数据库连接配置
spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# MyBatis配置
mybatis.mapper-locations=classpath*:mapper/*.xml
mybatis.type-aliases-package=com.example.demo.model

请替换上述配置中的your_databaseyour_usernameyour_password为你自己数据库的信息。

创建实体类

在使用MyBatis访问数据库时,你需要创建实体类来映射数据库表。创建一个简单的实体类示例:

package com.example.demo.model;

public class User {
    private Long id;
    private String username;
    private String email;

    // 省略构造方法和getter/setter
}

创建Mapper接口

Mapper接口定义了数据库操作的方法。创建一个Mapper接口来操作用户数据:

package com.example.demo.mapper;

import com.example.demo.model.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM user")
    List<User> findAll();

    @Select("SELECT * FROM user WHERE id = #{id}")
    User findById(Long id);

    @Insert("INSERT INTO user(username, email) VALUES(#{username}, #{email})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    void save(User user);

    @Update("UPDATE user SET username = #{username}, email = #{email} WHERE id = #{id}")
    void update(User user);

    @Delete("DELETE FROM user WHERE id = #{id}")
    void delete(Long id);
}

在这个Mapper接口中,我们使用了MyBatis的注解来定义SQL语句以及参数的映射关系。

创建Mapper XML 文件

除了注解方式,我们也可以使用XML文件来定义SQL语句。在src/main/resources/mapper目录下创建一个UserMapper.xml文件,并添加如下内容:

<?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="findAll" resultType="com.example.demo.model.User">
        SELECT * FROM user
    </select>

    <select id="findById" resultType="com.example.demo.model.User">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <insert id="save">
        INSERT INTO user(username, email) VALUES(#{username}, #{email})
    </insert>

    <update id="update">
        UPDATE user SET username = #{username}, email = #{email} WHERE id = #{id}
    </update>

    <delete id="delete">
        DELETE FROM user WHERE id = #{id}
    </delete>
</mapper>

这个XML文件定义了与Mapper接口中相同的SQL语句。

创建Service和Controller

接下来,我们创建一个Service类和一个Controller类来处理业务逻辑和处理HTTP请求。创建一个名为UserService的Service类:

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;

import java.util.List;

@Service
public class UserService {
    private final UserMapper userMapper;

    @Autowired
    public UserService(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    public List<User> findAll() {
        return userMapper.findAll();
    }

    public User findById(Long id) {
        return userMapper.findById(id);
    }

    public void save(User user) {
        userMapper.save(user);
    }

    public void update(User user) {
        userMapper.update(user);
    }

    public void delete(Long id) {
        userMapper.delete(id);
    }
}

然后,创建一个名为UserController的Controller类来处理HTTP请求:

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.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {
    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/")
    public List<User> getAllUsers() {
        return userService.findAll();
    }

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService

.findById(id);
    }

    @PostMapping("/")
    public void createUser(@RequestBody User user) {
        userService.save(user);
    }

    @PutMapping("/{id}")
    public void updateUser(@PathVariable Long id, @RequestBody User user) {
        user.setId(id);
        userService.update(user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.delete(id);
    }
}

运行项目

现在,你已经完成了Spring Boot和MyBatis的配置,创建了实体类、Mapper接口、Mapper XML文件,以及Service和Controller类。接下来,你可以运行你的Spring Boot应用程序。如果一切正常,你可以使用HTTP请求来访问数据库中的数据。

结论

本文介绍了如何使用Spring Boot和MyBatis访问数据库。通过配置数据库连接、创建实体类、Mapper接口和Mapper XML文件,以及编写Service和Controller类,你可以轻松地构建数据库应用程序。当然,这只是一个入门示例,实际项目中可能会更复杂,但这个示例可以作为一个良好的起点。

希望本文对你有所帮助,祝你在使用Spring Boot和MyBatis开发数据库应用程序时顺利前行!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1037655.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是FMEA(失效模式和影响分析)?

失效模式和影响分析&#xff08;FMEA&#xff09;是一个在开发阶段&#xff0c;用于确定产品或流程可能的风险和失败点的有条理的过程。FMEA团队会研究失效模式&#xff0c;也就是产品或流程中可能出错的地方&#xff0c;以及这些失效可能带来的影响&#xff08;如风险、损害、…

小程序如何关联公众号来发送模板消息

有时候我们可能需要通过公众号来发送一些小程序的服务通知&#xff0c;比如订单提醒、活动通知等。那么要如何操作呢&#xff1f; 1. 有一个通过了微信认证的服务号。需要确保小程序和公众号是同一个主体的。也就是说&#xff0c;小程序和公众号应该都是属于同一个企业。如果还…

当下IT测试技术员的求职困境

从去年被裁到现在&#xff0c;自由职业的我已经有一年没有按部就班打卡上班了。期间也面试了一些岗位&#xff0c;有首轮就挂的&#xff0c;也有顺利到谈薪阶段最后拿了offer的&#xff0c;不过最后选择了拒绝。 基于自己近一年的面试求职经历&#xff0c;我想聊聊当下大家在求…

博弈论——反应函数

反应函数 1 引言 谢老师的《经济博弈论》书中对反应函数并没有给出一般笼统的定义&#xff0c;而是将其应用与古诺模型并给出了相关解释&#xff1a;反应函数是指在无限策略的古诺博弈模型中&#xff0c;博弈方的策略有无限多种&#xff0c;因此各个博弈方的最佳对策也有无限…

双向认证配置

1.Linux准备环境 openssl 使用openssl version查看openssl版本&#xff0c;如果没有安转openssl&#xff0c;可以执行 yum install openssl 安装 nginx 我们使用nginx来进行https的双向认证&#xff0c;首先我们需要安装nginx并附带SSL 模块 详细的安装过程可以查看 Linux安装n…

Arrays的用法(常见方法的使用)

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 常见算法的API&#xff08;Arrays&#xff…

Cookie和Session的作用

最近学习Session和Cookie的总结&#xff0c;我发现好多做测试的朋友对这个的理解不是那么透彻&#xff1b;如果理解了Cookie和session的原理和使用&#xff0c;在我们的测试工作中&#xff0c;有很大的帮助&#xff1b;尤其是在接口测试&#xff0c;性能测试中。。。 目录 一、…

报错注入

1.原理 2.注入手法

tomcat线程模型

NioEndpoint组件 Tomcat的NioEndpoint实现了I/O多路复用模型。 工作流程 Java的多路复用器的使用&#xff1a; 创建一个Selector&#xff0c;在其上注册感兴趣的事件&#xff0c;然后调用select方法&#xff0c;等待感兴趣的事情发生感兴趣的事情发生了&#xff0c;比如可读…

java Spring Boot日志输出格式配置方法

前面 我们文章中 我们已经能把日志控制住了 但前面这些信息 又是什么呢&#xff1f; 如果不了解日志 看起来是挺痛苦的 其实 我们可以将日志分为 一下几个部分去读它 首先是这个日志的输出时间 是在什么时候发生的 然后是 日志的基本 之前我们也讲过 有信息 报错 警告等 然后…

适用于初学者,毕业设计的5个c语言项目,代码已开源

C语言项目集 项目介绍 该项目适用于初学者学习c语言&#xff0c;也适用于高校学生课程设计&#xff0c;毕业设计参考。 项目并不能满足所有人的需求&#xff0c;可进行项目指导&#xff0c;定制开发。 开源地址 c语言项目代码地址 项目列表 该项目包含如下5个管理系统&am…

ESP8266使用记录(三)

通过udp把mpu6050数据发送到PC端 /********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : ESP8266WiFiUdp_12 团队/Team : 太极创客团队 / Taichi-Maker (w…

【视频处理】通过调用图像来重建新影片及计算颜色通道的平均灰度值,并检测帧与前一帧之间的差异(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

网易云信4K 8K RTC助力远程医疗的技术实践

// 编者按&#xff1a;随着近年来国家关于缓解医疗资源分配不均的一系列政策出台&#xff0c;远程医疗作为平衡医疗资源分配的有力手段&#xff0c;目前正处于强劲发展阶段。网易云信运用超高清RTC视频技术助力医疗行业实现了远程高清视频病理分析和手术示教等能力。LiveVide…

Beyond Compare 4对比工具注册

Beyond Compare是一款文件及文件夹&#xff08;目录&#xff09;的对比工具。 Beyond Compare不仅可以快速比较出两个目录的不同&#xff0c;还可以比较每个文件的内容&#xff0c;而且可以任意显示比较结果。 Beyond Compare程序内建了文件浏览器&#xff0c;方便您对文件、…

NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061

今天发现,有两个处理器,启动以后,数据流不过去,后来,锁定问题在,queue队列上面,因为别的队列都可以通过,右键,empty queue清空,就是 这个队列不行,这个队列无法被删除,至于为什么导致这样的, 猜测是因为之前,流程设计好以后,队列没有设置背压,也没有设置队列中的内容大小和fl…

基于人脸5个关键点的人脸对齐(人脸纠正)

摘要&#xff1a;人脸检测模型输出人脸目标框坐标和5个人脸关键点&#xff0c;在进行人脸比对前&#xff0c;需要对检测得到的人脸框进行对齐&#xff08;纠正&#xff09;&#xff0c;本文将通过5个人脸关键点信息对人脸就行对齐&#xff08;纠正&#xff09;。 一、输入图像…

nginx实现反向代理实例

1 前言 1.1 演示内容 在服务器上访问nginx端口然后跳转到tomcat服务器 1.2 前提条件 前提条件&#xff1a;利用docker安装好nginx、tomcat、jdk8&#xff08;tomcat运行需要jdk环境&#xff09; 只演示docker安装tomcat&#xff1a; 默认拉取最新版tomcat docker pull t…

学习 OpenStack 的新指南和教程的六个建议

云基础设施是一个非常需要的技能。如果你正在为你的云基础架构需求寻找开源解决方案&#xff0c;那么 OpenStack 就是其中之一。OpenStack 是一个巨大的项目集合&#xff0c;为云服务的几乎每一个部分都提供了解决方案和集成。虽然这个巨大范围使得它成为一个强大的工具&#x…