IDEA2023 SpringBoot整合MyBatis(三)

一、数据库表

CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    age INT,
    gender ENUM('Male', 'Female', 'Other'),
    email VARCHAR(100) UNIQUE,
    phone_number VARCHAR(20),
    address VARCHAR(255),
    date_of_birth DATE,
    enrollment_date DATE,
    course VARCHAR(100)
);

-- 插入10条学生数据
INSERT INTO students (name, age, gender, email, phone_number, address, date_of_birth, enrollment_date, course) VALUES
('John Doe', 20, 'Male', 'john.doe@example.com', '1234567890', '123 Main St, City', '2003-01-01', '2023-09-01', 'Computer Science'),
('Jane Smith', 21, 'Female', 'jane.smith@example.com', '0987654321', '456 Elm Rd, Town', '2002-02-02', '2023-09-01', 'Business Administration'),
('Michael Johnson', 19, 'Male', 'michael.johnson@example.com', '1122334455', '789 Oak Ave, Village', '2004-03-03', '2023-09-01', 'Electrical Engineering'),
('Emily Davis', 22, 'Female', 'emily.davis@example.com', '5544332211', '321 Pine Blvd, County', '2001-04-04', '2023-09-01', 'Mechanical Engineering'),
('William Brown', 20, 'Male', 'william.brown@example.com', '9988776655', '654 Cedar Ln, District', '2003-05-05', '2023-09-01', 'Civil Engineering'),
('Olivia Wilson', 21, 'Female', 'olivia.wilson@example.com', '4433221100', '987 Walnut St, Borough', '2002-06-06', '2023-09-01', 'Chemistry'),
('Benjamin Taylor', 19, 'Male', 'benjamin.taylor@example.com', '7766554433', '246 Maple Dr, Neighborhood', '2004-07-07', '2023-09-01', 'Physics'),
('Grace Anderson', 22, 'Female', 'grace.anderson@example.com', '3322110099', '852 Birch Rd, Hamlet', '2001-08-08', '2023-09-01', 'Mathematics'),
('Henry Thompson', 20, 'Male', 'henry.thompson@example.com', '6655443322', '587 Aspen St, Province', '2003-09-09', '2023-09-01', 'Biology'),
('Chloe Robinson', 21, 'Female', 'chloe.robinson@example.com', '9977665544', '101 Poplar Ave, Region', '2002-10-10', '2023-09-01', 'Psychology');

二、在pom文件中添加MyBatis相关依赖包,Mysql驱动依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
      
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
         <!-- mybatis依赖 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.3</version>
        </dependency>
         <!-- mysql依赖 -->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- mybatis测试依赖 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter-test</artifactId>
            <version>3.0.3</version>
            <scope>test</scope>
        </dependency>

   当我们没有热部署的时候,我们必须在代码修改完后再重启程序,程序才会同步你修改的信息那么我们可以手动启动热部署-》》》

     <!-- 热部署工具 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

 

三、编写实体类

public class Student {
    // 定义属性
    private String name; // 姓名
    private int age; // 年龄
    private String gender; // 性别
    private String email; // 邮箱
    private String phoneNumber; // 电话号码
    private String address; // 地址
    private java.util.Date dateOfBirth; // 出生日期
    private java.util.Date enrollmentDate; // 入学日期
    private String course; // 课程

   ...setXXX and getXXX and constructor and toString...

四、 编写映射类StudentMapper

 */
@Mapper
public interface StudentMapper  {

   // @Select("select * from student where id = #{id}")
    public List<Student> findById(int id);

   //  @Select("select * from student")
    public List<Student> findAll();
}

注意:如果不写@Select注解,则就需要写Mapper映射文件

五、编写Mapper映射文件

  mybatis – MyBatis 3 | 配置

<?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.hlx.springbootdemo1.mapper.StudentMapper">
    <select id="findById" parameterType="int" resultType="Student">
        SELECT * FROM student WHERE id = #{id}
    </select>

    <select id="findAll" resultType="Student">
      select * from student
    </select>

</mapper>

六、编写配置文件

#mysql数据源配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/school?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=123456

#mybatis
mybatis.mapper-locations=classpath*:mapper/*.xml

#实体类的别名
mybatis.type-aliases-package=com.hlx.springbootdemo1.entity

#日志
logging.pattern.console='%d{HH:mm:ss.SSS} %clr(%-5level) ---  [%-15thread] %cyan(%-50logger{50}):%msg%n'

 七、编写业务类

@Service
public class StudentService {
    @Autowired
    private StudentMapper studentMapper;

    public List<Student> findAll(){
        return (studentMapper.findAll());
    }

    public Student findById(int id){
        return (studentMapper.findById(id));
    }
}

 八、编写控制器类

@RestController
public class StudentsController {
    @Autowired
    private StudentService studentService;

    @GetMapping("/user/{id}")
    public Student findById(@PathVariable int id) {
        return studentService.findById(id);
    }

    @GetMapping("/user/all")
    public List<Student> findAll() {
        return studentService.findAll();
    }
}

九、启动类

@SpringBootApplication
@MapperScan("com.hlx.springbootdemo1.mapper")
public class SpringbootDemo1Application {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDemo1Application.class, args);
    }

}

十、项目结构

十一、启动运行

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

教学内容全覆盖:航拍杂草检测与分类

1.背景意义 研究背景与意义 随着全球农业生产的不断发展&#xff0c;杂草的管理与控制成为了提升作物产量和质量的重要环节。杂草不仅会与作物争夺水分、养分和光照&#xff0c;还可能成为病虫害的滋生地&#xff0c;从而对农业生产造成严重影响。因此&#xff0c;准确、快速…

【倍数问题——同余系】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 1e5 10, M 1e3 10; int maxx[M][4]; void consider(int r, int x) {if(x > maxx[r][1]){maxx[r][3] maxx[r][2];maxx[r][2] maxx[r][1];maxx[r][1] x;}else if(x > maxx[r][2]){maxx[…

『VUE』33. 组件保持存活,切换组件时的生命周期(详细图文注释)

目录 动态切换组件导致的问题引入keeplive标签总结 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 动态切换组件导致的问题 动态切换组件使得每次组件都会被卸载然后重新初始化,导致数据每次都初始化,无法保存前一个组件的数据. …

【C++】从C到C++

C和C一些语法区别 1.三目运算符&#xff1a;在C语言中返回的是一个常量&#xff0c;是不能被赋值的&#xff1b;而C中返回的是变量&#xff0c;可以被赋值 2.C中的函数必须要写返回值类型 3.在全局下&#xff0c;C不允许int a;和int a10;等这种重定义二义性操作 4.在C中不要…

Redisson学习教程(B站诸葛)

弱智级别 package org.example.controller;public class IndexController {Autowiredprivate Redisson redisson;Autowiredprivate StringRedisTemplate stringRedisTemplate;RequestMapping("/deduct_storck")public String deductStock() {String lockKey "…

2024信创数据库TOP30之蚂蚁集团OceanBase

数据库作为存储、管理和分析这些数据的关键工具&#xff0c;其地位自然不言而喻。随着信息技术的日新月异&#xff0c;数据库技术也在不断演进&#xff0c;以满足日益复杂多变的市场需求。近日&#xff0c;备受瞩目的“2024信创数据库TOP30”榜单由DBC联合CIW/CIS权威发布&…

基于Java后台实现百度、高德和WGS84坐标的转换实战

目录 前言 一、需求的缘由 1、百度坐标拾取 2、高德坐标拾取 3、不同地图的坐标展示 二、后端坐标偏移转换处理 1、相关类库介绍 2、coordtransorm类图介绍 3、后台实际转换 三、总结 前言 在当今数字化时代&#xff0c;地理位置信息的精确性和实时性对于各种应用至…

Wireshark抓取HTTPS流量技巧

一、工具准备 首先安装wireshark工具&#xff0c;官方链接&#xff1a;Wireshark Go Deep 二、环境变量配置 TLS 加密的核心是会话密钥。这些密钥由客户端和服务器协商生成&#xff0c;用于对通信流量进行对称加密。如果能通过 SSL/TLS 日志文件&#xff08;例如包含密钥的…

网络安全,文明上网(6)网安相关法律

列举 1. 《中华人民共和国网络安全法》&#xff1a; - 这是中国网络安全的基本法律&#xff0c;于2017年6月1日开始实施。该法律明确了网络运营者的安全保护义务&#xff0c;包括采取数据分类、重要数据备份和加密等措施。 2. 《中华人民共和国数据安全法》&#xff1a; …

111 - Lecture 10

File I/O and GUI with JavaFX 文件输入/输出与JavaFX图形用户界面 一、Overview 1. File I/O &#xff08;1&#xff09; learning Java File I/O mechanism &#xff08;2&#xff09; writing into and reading from a file 使用文件I/O进行数据读取和…

【架构】主流企业架构Zachman、ToGAF、FEA、DoDAF介绍

文章目录 前言一、Zachman架构二、ToGAF架构三、FEA架构四、DoDAF 前言 企业架构&#xff08;Enterprise Architecture&#xff0c;EA&#xff09;是指企业在信息技术和业务流程方面的整体设计和规划。 最近接触到“企业架构”这个概念&#xff0c;转念一想必定和我们软件架构…

vue3:使用插件递归组件

vue3:使用插件递归组件 首先安装插件 npm i unplugin-vue-define-optionsvite.config.ts 配置插件 // vite.config.ts// 引入 unplugin-vue-define-options import DefineOptions from "unplugin-vue-define-options"; export default defineConfig({// 注册插件 De…

开源远程桌面工具:RustDesk

在远程办公和远程学习日益普及的今天&#xff0c;我们经常需要远程访问办公电脑或帮助他人解决电脑问题。 市面上的远程控制软件要么收费昂贵&#xff0c;要么需要复杂的配置&#xff0c;更让人担心的是数据安全问题。 最近我发现了一款名为 RustDesk 的开源远程桌面工具&…

springboot整合hive

springboot整合hive pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.…

ChatGPT 与其他 AI 技术在短视频营销中的技术应用与协同策略

摘要&#xff1a; 本文深入探讨了 ChatGPT 及其他 AI 技术在短视频营销中的应用。从技术层面剖析了这些技术如何助力短视频内容创作、个性化推荐、用户互动以及营销效果评估等多方面&#xff0c;通过具体方法分析、数据引用与大模型工具介绍&#xff0c;旨在为短视频营销领域提…

国土安全部发布关键基础设施安全人工智能框架

美国国土安全部 (DHS) 发布建议&#xff0c;概述如何在关键基础设施中安全开发和部署人工智能 (AI)。 https://www.dhs.gov/news/2024/11/14/groundbreaking-framework-safe-and-secure-deployment-ai-critical-infrastructure 关键基础设施中人工智能的角色和职责框架 https:/…

xtu oj 前缀和

样例输入 3 3 2 1 2 3 1 2 3 2 1 2 3 -1 -2 3 3 -4 3 1 4 2 1 样例输出 0 3 3 解题思路&#xff1a;排序前缀和二分查找 因为数组b是可以插入到数组a任意位置&#xff0c;要想k最大&#xff0c;就要尽可能把b的小数插到a数组的前面。所以&#xff0c;用qsort方法对数组b进…

Nexus搭建go私有仓库,加速下载go依赖包

一、搭建go私库 本文我们梳理一下go依赖包的私库搭建以及使用。 它只分为proxy和group两种仓库&#xff0c;这一点和maven仓库有所不同。 1、创建Blob Stores 为了区分不同的私库依赖包&#xff0c;存储的位置分隔开。 2、新建go proxy官网 Remote storage&#xff1a;htt…

CPU算法分析LiteAIServer摄像机实时接入分析平台固废检测算法助力环保

随着城市化进程的加速和工业化发展的不断深入&#xff0c;固体废弃物的处理问题逐渐成为了一个全球性的挑战。传统的固废检测方法主要依赖于人工巡查和抽样检测&#xff0c;这种方式不仅效率低下&#xff0c;而且难以实现对固体废弃物的全面覆盖和实时监测。为了解决这一问题&a…

国内镜像android studio

Android SDK在线更新镜像服务器 1.中国科学院协会镜像站: 部分地区无法使用 ◦IPV4/IPV6: mirrors.opencas.cn 端口&#xff1a;80 ◦IPV4/IPV6: mirrors.opencas.org 端口&#xff1a;80 ◦IPV4/IPV6: mirrors.opencas.ac.cn 端口&#xff1a;80 2.上海GDG镜像服务器地址…