重生之 SpringBoot3 入门保姆级学习(17、整合SSM)

重生之 SpringBoot3 入门保姆级学习(17、整合SSM)

  • 4、数据访问
    • 4.1 整合 ssm

4、数据访问

4.1 整合 ssm


  • 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.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.zhong</groupId>
    <artifactId>boot3-05-ssm</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>boot3-05-ssm</name>
    <description>boot3-05-ssm</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <!--SpringBoot Web 启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--MySQL 驱动-->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!--MyBatis 依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.3</version>
        </dependency>

        <!--类注解插件-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
  • application.properties
# 1、MySQL相关配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456

# 2、整合 MyBatis
# mybatis.config-location 告诉 MyBatis 每个接口的 xml 在哪里
mybatis.mapper-locations=classpath:/mapper/*.xml
mybatis.configuration.map-underscore-to-camel-case=true
  • 准备数据库
CREATE TABLE `t_user`
(
	`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '编号',
	`login_name` VARCHAR(200) NULL DEFAULT NULL COMMENT '用户名称' COLLATE 'utf8_general_ci',	 
	`nick_name`  VARCHAR(200) NULL DEFAULT NULL COMMENT '用户昵称' COLLATE 'utf8_general_ci',	 
	`password`   VARCHAR(200) NULL DEFAULT NULL COMMENT '用户密码' COLLATE 'utf8_general_ci',
	PRIMARY KEY (`id`)	 
);
insert into t_user(login_name,nick_name,password) values ('xiaozhong','小钟','123456');
insert into t_user(login_name,nick_name,password) values ('xiaowang','小王','123456');

image-20240602173643355

  • 运行成功后请刷新数据库

image-20240602173719691

  • 添加 Tuser 实体类映射数据库字段
package com.zhong.ssm.bean;

import lombok.Data;

/**
 * @ClassName : Tuser
 * @Description :
 * @Author : zhx
 * @Date: 2024-06-02 17:40
 */
@Data
public class TUser {
    private Long id;
    private String loginName;
    private String nickName;
    private String password;
}
  • 安装插件 MyBatisX

image-20240602174901680

  • 写 UserMapper 接口
package com.zhong.ssm.bean.mapper;

/**
 * @ClassName : UserMapper
 * @Description :
 * @Author : zhx
 * @Date: 2024-06-02 17:47
 */
public interface UserMapper {

}
  • 按键盘 Alt + Enter 选择 [MybatisX] Generate of xml 选择当前项目的 resource 目录下的 mapper 文件夹 点击确定

image-20240602175001019

image-20240602175233090

  • 自动生成了对应的 xml 文件

image-20240602175348116

  • 快速生成:新建方法 getUserById 按键盘 Alt + Enter 直接回车

package com.zhong.ssm.bean.mapper;

import com.zhong.ssm.bean.TUser;
import org.apache.ibatis.annotations.Param;

/**
 * @ClassName : UserMapper
 * @Description :
 * @Author : zhx
 * @Date: 2024-06-02 17:47
 */
public interface UserMapper {
    /**
     * 1、每个方法都在 mapper 文件有一个 sql 标签对应的
     * 2、所有参数都应该用 @Param(name) 进行签名 SQL 中才可用 #{name} 取值
     * @param id
     * @return
     */
    TUser getUserById(@Param("id") Long id);
}

image-20240602190036137

  • 添加查询语句
<?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.zhong.ssm.bean.mapper.UserMapper">

    <select id="getUserById" resultType="com.zhong.ssm.bean.TUser">
        select * from t_user where id=#{id}
    </select>
</mapper>
  • 添加包扫描路径
package com.zhong.ssm;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@MapperScan(basePackages = "com.zhong.ssm.bean.mapper")
@SpringBootApplication
public class Boot305SsmApplication {

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

}
  • 添加 controller
package com.zhong.ssm.controller;

import com.zhong.ssm.bean.TUser;
import com.zhong.ssm.mapper.UserMapper;
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;

/**
 * @ClassName : UserController
 * @Description :
 * @Author : zhx
 * @Date: 2024-06-02 19:15
 */
@RestController
public class UserController {
    @Autowired
    UserMapper userMapper;

    @GetMapping("/user/{id}")
    public TUser getUser(@PathVariable("id") Long id) {
        return userMapper.getUserById(id);
    }
}
  • 浏览器测试
http://localhost:8080/user/1

image-20240603130514316

http://localhost:8080/user/2

image-20240603130540667

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

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

相关文章

哪吒监控+cfcdn+ 反代grp端口

哪吒监控cfcdn 反代grp端口 背景&#xff1a; 哪吒监控&#xff1a;感觉VPS线路不稳定&#xff0c;为了打消自己潜意识&#xff0c;希望量化延迟。 cfcdn&#xff1a;隐藏真实站点&#xff0c;保障小鸡隐秘安全 反代grpc端口: 反代grpc到支持https(TLS)的端口&#xff0c;这…

ESP32 Error creating RestrictedPinnedToCore

随缘记&#xff0c;刚遇到&#xff0c;等以后就可能不想来写笔记了。 目前要使用到音频数据&#xff0c;所以去用ESP-ADF&#xff0c;但在使用例程上出现了这个API有问题&#xff0c;要去打补丁。 但是我打补丁的时候git bash里显示not apply&#xff0c;不能打上。 网上看到…

OpenCV学习(4.4) 平滑图像

1.目的 在本教程中将学习&#xff1a; 用各种低通滤波器模糊图像。对图像应用自定义过滤器&#xff08;二维卷积&#xff09;。 在图像处理中&#xff0c;平滑图像是一种去噪和模糊技术&#xff0c;用于减少图像中的噪声和细节&#xff0c;使得图像看起来更加平滑。平滑处理…

2024百度之星 跑步

原题链接&#xff1a;码题集OJ-跑步 题目大意&#xff1a;一个n个人在绕圈跑&#xff0c;第i个人跑一圈的时间是i分钟&#xff0c;每二个人位置相同就会打一次招呼&#xff0c;如果同时来到终点&#xff0c;他们就会停下来&#xff0c;请问会打多少次招呼&#xff1f; 思路&a…

文字生成视频!又一王炸!!!(且免费使用!)

VIVA王炸 开场 “ 生成令人惊叹的AI视频&#xff0c;再加上4K视频增强和初学者友好的自动提示优化&#xff0c;为您提供无与伦比的视频创作体验。” 直抒胸臆 自从sora的出现&#xff0c;开启了人工智能的有一个阶段。VIVA是现在唯数不多的与OpenAI的sora互相抗衡。也是为数…

记录遇见的小问题

1&#xff0c;angularjs 使用bootstrap时&#xff0c;遇见模态框怎么点击空白处不关闭&#xff1b; <div id"dialog-modal" data-backdrop"static" data-keyboard"false"> 但是在实际使用过程中调用了一个html 需要在 js里加 $scope.Up…

C语言杂谈:函数栈帧,函数调用时到底发生了什么

我们都知道在调用函数时&#xff0c;要为函数在栈上开辟空间&#xff0c;函数后续内容都会在栈帧空间中保存&#xff0c;如非静态局部变量&#xff0c;返回值等。这段空间就叫栈帧。 当函数调用&#xff0c;就会开辟栈帧空间&#xff0c;函数返回时&#xff0c;栈帧空间就会被释…

基于SSM的“健身俱乐部网站”的设计与实现(源码+数据库+文档)

基于SSM的“健身俱乐部网站”的设计与实现&#xff08;源码数据库文档) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 用户注册界面图 系统登录界面 添加管理员账户界面…

RPA-UiBot6.0数据整理机器人—杂乱数据秒变报表(内附RPA师资培训课程)

前言 友友们是否常常因为杂乱的数据而烦恼&#xff1f;数据分类、排序、筛选这些繁琐的任务是否占据了友友们的大部分时间&#xff1f;这篇博客将为友友们带来一个新的解决方案&#xff0c;让我们共同学习如何运用RPA数据整理机器人&#xff0c;实现杂乱数据的快速整理&#xf…

[ZJCTF 2019]NiZhuanSiWei、[HUBUCTF 2022 新生赛]checkin、[SWPUCTF 2021 新生赛]pop

目录 [ZJCTF 2019]NiZhuanSiWei [HUBUCTF 2022 新生赛]checkin 1.PHP 关联数组 PHP 数组 | 菜鸟教程 2.PHP 弱比较绕过 PHP 类型比较 | 菜鸟教程 [SWPUCTF 2021 新生赛]pop [ZJCTF 2019]NiZhuanSiWei BUUCTF [ZJCTF 2019]NiZhuanSiWei特详解&#xff08;php伪…

[word] word怎样转换成pdf #职场发展#经验分享#职场发展

word怎样转换成pdf word怎样转换成pdf&#xff1f;word格式是办公中常会用到的格式&#xff0c;word格式编辑好了要想转换成pdf格式再来传输的话需要怎么操作呢&#xff1f;小编这就给大家分享下操作方法&#xff0c;一起来学习下吧&#xff01; 1、安装得力PDF转换器&#x…

C语言 io-文件拷贝

#include <stdio.h> int main(int argc, const char *argv[]) {//1文件拷贝到2文件FILE* fileAfopen(argv[1],"r");FILE* fileBfopen(argv[2],"w");if(NULLfileA){perror("fopen");return -1;}if(NULLfileB){perror("fopen");re…

LangChain 一 hello LLM

本来想先写LangChain系列的&#xff0c;但是最近被AutoGen、LlamaIndex给吸引了。2023就要过去了&#xff0c;TIOBE数据编程语言排名Python都第一了&#xff0c;可见今年AI开发之热。好吧&#xff0c;一边学习业界通用的LangChain框架&#xff0c;一边准备跨年吧。 前言 先是O…

Mac下删除系统自带输入法ABC,正解!

一、背景说明 MacOS 在 14.2 以下的系统存在中文输入法 BUG&#xff0c;会造成系统卡顿&#xff0c;出现彩虹圆圈。如果为了解决这个问题&#xff0c;有两种方法&#xff1a; 升级到最新的 14.5 系统使用第三方输入法 在使用第三方输入法的时候&#xff0c;会发现系统自带的 …

mysql启动出现Error: 2 (No such file or directory)

查看mydql状态 systemctl status mysqlThe designated data directory /var/lib/mysql/ is unusable 查看mysql日志 tail -f /var/log/mysql/error.logtail: cannot open ‘/var/log/mysql/error.log’ for reading: No such file or directory tail: no files remaining 第…

网关API(SpringCloudGateway)如何自定义Filter

1.前言 SpringCloud 虽然给我们提供了很多过滤器&#xff0c;但是这些过滤器功能都是固定的&#xff0c;无法满足用户的各式各样的需求。因此SpringCloud提供了过滤器的扩展功能自定过滤器。 开发者可以根据自己的业务需求自定义过滤器。 2. 自定义 GatewayFilter(局部过滤器)…

【NLP】2、大语言模型综述

一、背景和发展历程 大语言模型四个训练阶段&#xff1a; 预训练&#xff1a; 利用海量的训练数据&#xff0c;包括互联网网页、维基百科、书籍、GitHub、 论文、问答网站等&#xff0c;构建包含数千亿甚至数万亿单词的具有多样性的内容。利用由数千块高性能 GPU 和高速网络组成…

C语言指针介绍其一

指针是什么&#xff1f; 指针是内存中一个最小单元&#xff08;一个字节&#xff09;的编号&#xff0c;也就是地址&#xff0c;每一个单元都有属于自己的地址。 平时我们说的指针一般说的是指针变量&#xff0c;用来存放内存地址的变量就叫指针变量。 指针变量 int main()…

Postgresql中json和jsonb类型区别

在我们的业务开发中&#xff0c;可能会因为特殊【历史&#xff0c;偷懒&#xff0c;防止表连接】经常会有JSON或者JSONArray类的数据存储到某列中&#xff0c;这个时候再PG数据库中有两种数据格式可以直接一对多或者一对一的映射对象。所以我们也可能会经常用到这类格式数据&am…