西南交通大学智能监测 培训课程练习2

news2024/11/28 14:33:02

2023.05.27培训

task1:spring、springboot

task2:mybatis

目录

一、使用IDEA创建工程

1.1新建

 ​编辑

1.2选择Maven 

 1.3创建包

二、添加相关依赖

2.1添加依赖

2.2更新Maven

 三、配置application.yaml文件

四、相关注解的使用和理解

4.1@Component

4.2@Autowired

4.3@springBootApplication

4.4@Mapper

4.5@MapperScan

4.6@PostConstruct

4.7@Select

4.8@Insert

4.9@Delete

4.10@Update

五、编写java代码

5.1DO类

5.2Mapper接口

5.3启动类

5.4测试类

六、执行流程分析


一、使用IDEA创建工程

1.1新建

 

1.2选择Maven 

 

 1.3创建包

二、添加相关依赖

2.1添加依赖

使用Maven,在pom.xml文件里输入

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.7.RELEASE</version>
</parent>
	
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Mysql Connector -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

        <!-- Druid 数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.4</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3.4</version>
        </dependency>
</dependencies>

 

2.2更新Maven

在界面里点击即可更新

更新完毕后,在项目目录底下外部文件夹会有导入的文件

 

 

 

 三、配置application.yaml文件

配置项目运行端口、mysql端口、数据库IP、用户名、密码

server:
  # 标记本项目运行在此电脑的 8000 端口
  port: 8000

spring:
  datasource:
    # 数据库地址, mysql 端口默认 3306
    url: jdbc:mysql://127.0.0.1:3306/summerytempdb?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&allowMultiQueries=true&useSSL=false&serverTimezone=UTC
    # 驱动类,复制
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: ykxykx

四、相关注解的使用和理解

4.1@Component

标注一个类为Spring容器的Bean,把普通pojo实例化到spring容器中,可理解为类加上这个注解后,会在后台自动创建一个对象,存入spring容器

4.2@Autowired

@Autowired注解可以放在成员变量上,也可以放在成员变量的set方法上,也可以放在任意方法上表示

自动执行当前方法,如果方法有参数,会在IOC容器中自动寻找同类型参数为其传值。

例如和@Component配合使用,在类上声明@Component注解,再在另一个类的属性里设置这个类的成员变量并在上面加上@Autowired注解,则会自动赋予spring容器中创建的对象

4.3@springBootApplication

@SpringBootApplication是一个组合注解,用于快捷配置启动类

SpringBoot应用标注在某个类上说明这个类是SpringBoot的主配置类

SpringBoot就应该运行这个类的main方法来启动SpringBoot应用

注意事项:

这个 启动类必须在放在整个项目的最根目录,Spring 在扫描注解的时候是扫描这个文件所在包以下的所有Class,如果其他类放在了高于这个类或其他目录下就会扫描不到

 

4.4@Mapper

添加位置:接口上面

作用:添加了@Mapper注解之后,在编译时会生成相应的接口实现类

4.5@MapperScan

用于扫描 Mapper 接口,并将其实例化后交给 Spring 容器管理,使得可以在其他组件中使用这些 Mapper 接口的实现类

@SpringBootApplication
@MapperScan("ykx.summertrain.system")
public class YKXSpringBootApplication {

}

@MapperScan 注解指定了 Mapper 接口所在的包路径,这样,在应用启动时Spring Boot 就会自动扫描该包下的所有 Mapper 接口,并将其实例化后交给 Spring 容器管理。

使用 @MapperScan 注解可以避免手动在配置文件中配置 Mapper 的 Bean,从而简化配置过程,提高开发效率。

4.6@PostConstruct

@PostConstruct注解的方法在项目启动的时候执行这个方法,也可以理解为在spring容器启动的时候执行,可作为一些数据的常规化加载,比如数据字典之类的

4.7@Select

四个和数据库相关的注解之一,见名知意,操作select语句

4.8@Insert

四个和数据库相关的注解之一,见名知意,操作insert语句

4.9@Delete

四个和数据库相关的注解之一,见名知意,操作delete语句

4.10@Update

四个和数据库相关的注解之一,见名知意,操作update语句

五、编写java代码

5.1DO类

一张数据库表对应一个实体类

实体类的属性对应数据库里product表的字段

并给该类加上@Component注解

@Component
public class ProductDO {

    private String product_id;
    private String name;
    private String type;


    public String getProduct_id() {
        return product_id;
    }

    public void setProduct_id(String product_id) {
        this.product_id = product_id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    @Override
    public String toString() {
        return "ProductDO{" +
                "product_id='" + product_id + '\'' +
                ", name='" + name + '\'' +
                ", type='" + type + '\'' +
                '}';
    }
}

5.2Mapper接口

product数据表对应的ProductMapper接口,加上@@Mapper注解

设置相应操作数据库的方法

@Mapper
public interface ProductMapper {

        @Select("select *from t_ykx_product;")
        ProductDO[] selectProduct();

        @Insert("insert into t_ykx_product value(#{e.product_id},#{e.name},#{e.type});")
        int insertNewProduct(@Param("e") ProductDO param);

        @Delete("delete from t_ykx_product where product_id = #{id};")
        int deleteProduct(@Param("id") String id);

        @Update("update t_ykx_product set type = #{type} where type = 'BOOK';")
        int updateProduct(@Param("type") String type);
}

 

5.3启动类

启动类需要用@SpringBootApplication注解声明

@MapperScan("ykx.summertrain.system")指定了 Mapper 接口所在的包路径

启动代码固定,复制即可~

@SpringBootApplication
@MapperScan("ykx.summertrain.system")
public class YKXSpringBootApplication {

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

}

 

5.4测试类

建一个TestClass作为测试类

加上@Component让spring去管理bean

类里声明ProductMapper接口属性,并加上@Autowired自动填充

定义一个init()方法,调用对应的sql方法并输出

加上@PostConstruct注解使之加载完后就执行init()方法

最终运行结果如下图所示

@Component
public class TestClass {

    @Autowired
    private ProductMapper productMapper ;

    @PostConstruct
    private void init(){

        ProductDO[] productDOS = productMapper.selectProduct();
        System.out.println("=======查询数据如下=======");
        for(int i = 0; i < productDOS.length; i++){
            System.out.println(productDOS[i]);
        }

        ProductDO productDO = new ProductDO();
        productDO.setProduct_id("99");
        productDO.setName("iPhone14 pro max");
        productDO.setType("phone");
        System.out.println("插入的数据:" + productDO);
        int i1 = productMapper.insertNewProduct(productDO);
        System.out.println("插入的行数为:" + i1);
        int i2 = productMapper.deleteProduct("10");
        System.out.println("删除的行数为:" + i2);
        int i3 = productMapper.updateProduct("book");
        System.out.println("修改的行数为:" + i3);

    }

}

 

六、执行流程分析

1)在类上声明@Component注解,后台自动创建一个对象放在spring容器里,使用@Autowired可以获取这个对象

2)启动类声明了@MapperScan("ykx.summertrain.system") 会在项目里去找@Mapper注解

3)ProductMapper接口声明了@Mapper注解,将其对象放入容器内

4)TestClass声明了ProductMapper类型的属性,且加了@Autowired注解,所以将其对象赋给它

5)执行PostConstruct代码,调用ProductMapper里面的方法,mybatis分析方法,发现加有sql语句的注解,就在数据库里执行括号内的sql语句并返回结果

6)返回的结果自动封装好,就是ProductDO对象

7)最后接收返回值并输出结果

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

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

相关文章

华硕天选3FX507ZC原装Windows11原厂预装系统工厂模式恢复安装带ASUSRecevory一键还原22H2版本

华硕天选3FX507ZC原装Windows11原厂预装系统工厂模式恢复安装带ASUSRecevory一键还原 文件地址&#xff1a;https://pan.baidu.com/s/1snKOsH3OMl3GZLqeAf-GLA?pwd8888 华硕工厂恢复系统 &#xff0c;安装结束后带隐藏分区以及机器所有驱动软件 需准备一个16G左右空u盘进行…

倒置字符串、猜名次、猜凶手、杨辉三角

目录 例一&#xff1a;倒置字符串 例二&#xff1a;猜名次 例三&#xff1a;猜凶手 例四&#xff1a;杨辉三角 方法一 方法二 例一&#xff1a;倒置字符串 首先我们先来看一下题目具体要求 再来看一下我们所需要的效果 这里呢&#xff0c;博主给出两种思路&#xff0c;…

docker构建镜像上传到DockerHub

docker构建镜像上传到DockerHub DockerHub注册账号 DockerHub网址: https://hub.docker.com/ 注册 登录 安装docker docker宿主机环境 centos7 参考网址: https://yeasy.gitbook.io/docker_practice/install/centos 测试 docker 是否安装好 docker -v登录docker 登录 dock…

自动化测试3:Junit单元测试框架

目录 1.相关技术 1.1注解 1.1.1Test 1.1.2Disables 忽略 1.1.3BeforeAll AfterAll 1.1.4BeforeEach AfterEach 1.2参数化 1.2.1单参数 1.2.2多参数 1.2.3CSV获取参数 1.2.4方法获取参数 1.3运行顺序 1.3.1问题 1.3.2按指定顺序执行 1.3.3随机执行 1.4.断言 2.测…

webpack的使用

一、什么是webpack&#xff1f; webpack是一个前端构建工具&#xff0c;目前比较主流的构建工具&#xff0c;自定义的模块比较多。 二、应用场景 vue、react、angular 都可以通过webpack构建全部可供访问的页面数量不超过500个 三、安装 通过npm方式在项目根目录下执行命令…

spring官网guide案例直接运行

spring官网guide案例可以直接运行 spring guide 的案例基本包含 spring 以及 springboot 很多功能的案例 具体网址: https://spring.io/guides 我们使用 GitHub CodeSpaces 或者 GitPod 甚至不需要 git clone 代码到本地 , 可以直接在线运行 GitHub CodeSpacesGitPod 说明:…

SpringBoot 如何实现文件上传和下载

当今Web应用程序通常需要支持文件上传和下载功能&#xff0c;Spring Boot提供了简单且易于使用的方式来实现这些功能。在本篇文章中&#xff0c;我们将介绍Spring Boot如何实现文件上传和下载&#xff0c;同时提供相应的代码示例。 文件上传 Spring Boot提供了Multipart文件上…

Java 集合 - Map 接口

文章目录 1.概述2.常用 API3.遍历 Map 集合4.HashMap 和 Hashtable5.LinkedHashMap6.TreeMap7.Properties8.Set 集合与 Map 集合的关系9.总结 1.概述 在日常生活和编程中&#xff0c;我们常常需要处理一种特殊的关系&#xff1a;一一对应的关系&#xff0c;如 IP 地址与主机名…

深入浅出Docker:Java开发者的快速上手指南

前言1. Docker是什么&#xff1f;2. 安装Docker3. 使用Docker容器运行Java应用4. 使用Docker部署Java Web应用5. 总结 前言 在今天的软件开发环境中&#xff0c;Docker已经成为了一种常见的开发和部署工具。无论你是前端开发者、后端开发者&#xff0c;还是DevOps工程师&#…

【C++系列P3】‘类与对象‘-三部曲——[基础知识](1/3)

前言 大家好吖&#xff0c;欢迎来到 YY 滴 C系列 &#xff0c;热烈欢迎&#xff01; 【 类与对象-三部曲】的大纲主要内容如下&#xff1a; 如标题所示&#xff0c;本章是【 类与对象-三部曲】三章中的第一章节——基础知识章节&#xff0c;主要内容如下&#xff1a; 目录 一.…

Redis(五)发布与订阅

文章目录 1、什么是发布与订阅2、指令与描述3、指令测试 1、什么是发布与订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式&#xff1a;发送者 (pub) 发送消息&#xff0c;订阅者 (sub) 接收消息。 Redis 的 subscribe 命令可以让客户端订阅任意数量的频道&#xff0c; 每当…

一文带你了解MySQL之事务的简介

前言&#xff1a; 事务&#xff08;Transaction&#xff09;是一组SQL组成的执行单元&#xff08;Unit&#xff09;&#xff0c;是数据库并发控制和恢复回滚的基本单位。一个事务中可能包含多个SQL&#xff0c;要么都失败&#xff0c;要么都成功&#xff0c;今天我们就详细学习…

Linux|shell编程|拷贝大文件之显示进度条

前言&#xff1a; Linux由于自身并不是一个图形化的界面&#xff0c;因此&#xff0c;命令行是它的一个基础交互模式&#xff0c;而我们有的时候需要进度条来让程序运行的更加美观&#xff0c;更加直观&#xff0c;例如&#xff0c;一些比较消耗io的操作&#xff0c;文件拷贝&…

计算机操作系统第四版第八章磁盘存储器的管理—课后习题答案

1.目前常用的外存有哪几种组织方式? (1)连续组织方式。为每一个文件分配--组位置相邻接的盘块&#xff0c;由此形成的文件物理结构是顺序式的文件结构。 (2)链接组织方式。为每个文件分配一组位置离散的盘块&#xff0c;通过给每个盘块设置一个指针,将属于同-一个文件的盘块链…

【SDP协议】

SDP 1.概念2术语2.1 SERVICE ATTRIBUTE2.3 UUID 3 数据表示3.2 hci log4.4.4.3 PARTIAL RESPONSES AND CONTINUATION STATE4.4.4.4 ERROR HANDLING4.4.4.5 SERVICE SEARCH TRANSACTION4.4.4.6 SERVICE ATTRIBUTE TRANSACTION4.4.4.3 SERVICE SEARCH ATTRIBUTE TRANSACTION4.4.4…

【密码学复习】第九讲 密钥管理(二)

公钥的分发问题 广播式公钥分发&#xff1a;任意通信方将它的公钥发送给另一方或广播给其他通信各方。 目录式公钥分发&#xff1a;由可信机构维护一个公开、动态、可访问的公开密钥目录。可以通过可信渠道到可信机构登记并申请增、删、改自己的公钥。其他人可以基于公开…

ARM的七种工作模式

分类 ARM的工作模式分为普通模式、特权模式&#xff0c;其中特权模式又细分为六种模式。 普通模式用户模式&#xff08;User&#xff09;大部分任务执行在这种模式 特权模式快速中断模式FIQ当一个高优先级&#xff08;fast) 中断产生时将会进入这种模式普通中断模式IRQ当一个…

数据库基础——4.select语句

这篇文章我们来讲一下select语句&#xff0c;这是数据库中最最重要的一个关键字 目录 1.select的基本用法 1.1 select的基本用法 1.2 列的别名 1.3 去重查询 1.4 空值参与运算 1.5 着重号 1.6 查询常数 1.7 条件查询 2. 查看表结构 1.select的基本用法 1.1 select的…

12. 测试搭建百万并发项目

本文利用四台虚拟机&#xff0c;实现了百万并发的项目&#xff0c;并解决其中遇到的一些问题 一、百万并发项目 准备4个虚拟机&#xff0c;其中一个4G内存&#xff0c;2核CPU&#xff1b;另外三个2G内存&#xff0c;1核CPU。 在服务器中运行11节的代码&#xff0c;客户端中运…

分享一个500页面给大家

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>500页面</title><style>body,html {padding: 0;margin: 0;font-family: Quicksand, sans-s…