如何搭建第一个SpringBoot+MyBatis项目

news2024/11/23 13:40:41

🙈作者简介:练习时长两年半的Java up主
🙉个人主页:程序员老茶
🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎
📚系列专栏:Java全栈,计算机系列(火速更新中)
💭 格言:种一棵树最好的时间是十年前,其次是现在
🏡动动小手,点个关注不迷路,感谢宝子们一键三连

目录

  • 课程名:Java
    • 内容/作用:知识点/设计/实验/作业/练习
    • 学习:SpringBoot+MyBatis
  • SpringBoot
  • 创建SpringBoot项目
    • 通过IDEA创建
    • 通过官网模板创建
  • SpringBoot的HelloWorld
    • 新建一个控制层的类
    • 更改项目默认配置
  • 开启热部署
    • 使用
  • Lombok
    • 使用
    • 在某个实体类上添加注解
  • SpringBoot+MyBatis实现单表查询
    • 1.创建好SpringBoot项目
    • 2.添加依赖
    • 3.项目配置
    • 4.根据数据表创建实体类、dao层接口、service、controller
    • 5.在SpringBoot的启动类上,添加@MapperScan注解,扫描dao层所在根包
  • 总结

课程名:Java

内容/作用:知识点/设计/实验/作业/练习

学习:SpringBoot+MyBatis

SpringBoot

Spring推出的一个Spring框架的脚手架。

不是一个新的框架,而是搭建Spring相关框架的平台。

它省去了Spring、SpringMVC项目繁琐的配置过程,让开发Web项目变得更加简单。

本质还是Spring+SpingMVC,可以搭配其他的ORM框架,如Mybatis,MybatisPlus,JPA,Hibernate等。

特点

  • 内置了Tomcat,不需要部署项目到Tomcat中
  • 内置了数据库连接池,Hikari
  • 减少了jar文件依赖的配置
  • SpringBoot中只有一个配置文件,格式为yml或properties。

创建SpringBoot项目

通过IDEA创建

在这里插入图片描述

在这里插入图片描述

通过官网模板创建

官网模板Spring Initializr

在这里插入图片描述

点击generate
在这里插入图片描述

会自动下载压缩包,解压后使用idea打开即可

创建后的目录结构

在这里插入图片描述

SpringBoot的HelloWorld

新建一个控制层的类

在SpringBoot的启动类XXXApplication所在的包中,创建子包,新建类

在这里插入图片描述

启动项目时,运行在这里插入图片描述类中的main方法即可,默认项目名为localhost:8080

@Controller
public class FirstController {
    @RequestMapping("/hello")
    public String hello(){
        System.out.println("xxxxxx");
        return "Hello SpringBoot!";
    }
}

如果这时启动项目后访问,是404页面,因为当前方法返回的字符串表示一个静态页面的名称,即static目录下的页面名。

@RequestMapping("/hello")
public String hello(){
    System.out.println("xxxxxx");
    return "welcome.html";
}

如果是返回一个.html页,且该页面位于static目录下,访问/hello时,就会跳转到对应页面

@RequestMapping("/hello")
@ResponseBody
public String hello(){
    System.out.println("xxxxxx");
    return "Hello SpringBoot!";
}

如果添加了@ResponseBody注解,访问该方法时,浏览器就会得到返回的内容

更改项目默认配置

在application.properties文件中

# 修改默认端口号
server.port=8088
# 修改项目上下文路径
server.servlet.context-path=/first

开启热部署

项目在开发工程中,可以不需要每次改动代码后重启,等待一段时间后自动更新编译运行

使用

添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>

设置

在这里插入图片描述

在这里插入图片描述

Lombok

用于简化实体类中模板代码的工具

使用

添加依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

IDEA2020.2之后的版本会内置Lombok插件,无需安装。

旧版本需要安装

  • IDEA插件官网IntelliJ IDEA Ultimate Plugins and Themes | JetBrains Marketplace
  • IDEA内置插件市场搜索
    在这里插入图片描述

在某个实体类上添加注解

Lombok常用注解作用
@AllArgsConstructor生成全参构造方法
@Data以下注解之和
@Setter生成set方法
@Getter生成get方法
@NoArgsConstructor生成无参构造方法
@ToString生成所有参数的toString()方法
@EqualsAndHashCode生成所有参数的equlas()和hashCode()方法

SpringBoot+MyBatis实现单表查询

1.创建好SpringBoot项目

在创建项目的同时可以选择第二步的依赖

2.添加依赖

  • spring-web
  • mybatis-spring-boot-starter
  • mysql-connector-j
  • lombok
  • spring-devtools
<!-- spring-web -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

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

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

<!-- lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

<!-- springboot集成mybatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.3.0</version>
</dependency>

3.项目配置

在application.properties中添加

  • 配置数据库连接信息

    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/gamedb?serverTimezone=Asia/Shanghai
    spring.datasource.username=root
    spring.datasource.password=root
    
  • 配置Mybatis

    在resouces目录下创建一个mapper目录用于保存mybatis的sql映射文件

在这里插入图片描述

#mapper映射文件目录
mybatis.mapper-locations=classpath:mapper/*.xml
#开启驼峰命名映射
mybatis.configuration.map-underscore-to-camel-case=true
#开启sql日志
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

mybatis的sql映射文件模板

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="某个dao层接口的全限定名">

</mapper>

4.根据数据表创建实体类、dao层接口、service、controller

在这里插入图片描述

实体类

package com.hqyj.firstspringboot.entity;

import lombok.Data;

@Data
public class Hero {
    private Integer id;
    private String name;
    private String position;
    private String sex;
    private Integer price;
    private String shelfDate;
}

dao

package com.hqyj.firstspringboot.dao;

import com.hqyj.firstspringboot.entity.Hero;
import org.springframework.stereotype.Repository;

import java.util.List;

/*
* dao层接口
* */
@Repository
public interface HeroDao {
    List<Hero> queryAll();
}

service

package com.hqyj.firstspringboot.service;

import com.hqyj.firstspringboot.dao.HeroDao;
import com.hqyj.firstspringboot.entity.Hero;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class HeroService {
    
    @Autowired
    private HeroDao heroDao;
    
    public List<Hero> queryAll(){
        return heroDao.queryAll();
    }
}

controller

package com.hqyj.firstspringboot.controller;

import com.hqyj.firstspringboot.entity.Hero;
import com.hqyj.firstspringboot.dao.HeroDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
public class FirstController {


    @Autowired
    private HeroDao heroDao;


    @RequestMapping("/queryAll")
    @ResponseBody
    public List<Hero> queryAll(){
        return heroDao.queryAll();
    }
}

5.在SpringBoot的启动类上,添加@MapperScan注解,扫描dao层所在根包

package com.hqyj.firstspringboot;

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

@SpringBootApplication
@MapperScan("com.hqyj.firstspringboot.dao")
public class FirstSpringBootApplication {

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

启动项目,根据设置的项目端口号、上下文路径、controller的映射访问对应的控制器

在这里插入图片描述

总结

   好好学习,天天向上。

往期专栏
Java全栈开发
数据结构与算法
计算机组成原理
操作系统
数据库系统
物联网控制原理与技术

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

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

相关文章

ChatGPT已能模仿任何写作风格,让你的自媒体快速起号

我认识的一两个技术大佬目前失业在家&#xff0c;压力不小。对于现在的就业市场来说&#xff0c;再找工作&#xff0c;高不成低不就。他们的薪资&#xff0c;一般企业无法承受&#xff0c;大厂岗位又在缩减。今年真正感受到了寒冬。 对于我们还有饭吃的程序员&#xff0c;现在不…

【Linux网络服务】Apache网页优化

Apache网页优化 一、网页压缩1.1网页压缩步骤 二、网页缓存三、隐藏版本信息五、Apache防盗链 一、网页压缩 在企业中&#xff0c;部署Apache后只采用默认的配置参数&#xff0c;会引发网站很多问题&#xff0c;换言之默认配置是针对以前较低的服务器配置的&#xff0c;以前的…

如何通过自学成为一名白帽黑客(网安工程师)

从事网络安全这么多年&#xff0c;总是会被问到很多奇奇怪怪的问题&#xff1a; 「叔叔&#xff0c;我Steam账号被盗了&#xff0c;能帮忙找回吗&#xff1f;我给你发红包」 「我的手机被监控了&#xff0c;生活和工作受到了严重影响&#xff0c;该怎么解决&#xff1f;」 「…

学会这两件事,让你在人生路上走得更远

人生&#xff0c;就是一场不断前行&#xff0c;没有退路的旅行&#xff0c;也是一场不断醒悟的过程。 看透&#xff0c;然后醒悟&#xff1b;放下&#xff0c;然后幸福。 有些事&#xff0c;看淡就好&#xff1b;有些人&#xff0c;看穿就行。 不管世事如何艰难&#xff0c;只要…

Compose也能开发iOS了,快来体验~

前言 在之前&#xff0c;我们已经体验了Compose for Desktop 与 Compose for Web&#xff0c;目前Compose for iOS 已经有尚未开放的实验性API&#xff0c;乐观估计今年年底将会发布Compose for iOS。同时Kotlin也表示将在2023年发布KMM的稳定版本。 届时Compose-jb KMM 将实…

腾讯云4核8G服务器12M带宽支持多少人访问?

腾讯云轻量4核8G12M服务器配置446元一年&#xff0c;518元12个月&#xff0c;腾讯云轻量应用服务器具有100%CPU性能&#xff0c;系统盘为180GB SSD盘&#xff0c;12M带宽下载速度1536KB/秒&#xff0c;月流量2000GB&#xff0c;折合每天66.6GB流量&#xff0c;超出月流量包的流…

解锁接口关联测试新技能!HttpRunner教你如何轻松搞定。

目录 前言&#xff1a; 一、安装HttpRunner 二、编写测试用例 三、运行测试用例 四、实现接口关联测试 五、总结 前言&#xff1a; 在接口自动化测试中&#xff0c;一个常见的场景就是需要对多个接口进行关联测试&#xff0c;例如登录后获取token&#xff0c;再利用token…

如何自学黑客?零基础自学黑客需要多久?

问题一&#xff1a;黑客如何学起&#xff1f; 必须从学习者的角度来看&#xff0c;如果你是一个已经学过编程&#xff0c;通晓几门语言的人那么这个答案就会和一个从没有接触过的计算机&#xff0c;甚至连什么叫高级语言还不知道的人有所区别的对待。 这就像是登珠穆朗玛峰一…

ARM实验5-流水灯仿真实验

一、实验名称&#xff1a;流水灯仿真实验 二、实验目的&#xff1a; 掌握ARM处理器的输入输出接口。掌握通过MDK提供的仿真功能&#xff0c;实现系统的仿真运行。通过该编程实验&#xff0c;进一步巩固和强化学生ARM汇编编程的能&#xff0c;ARM应用程序框架&#xff0c;培养…

chatgpt赋能python:Python中的主函数调用其它函数

Python中的主函数调用其它函数 Python语言是一种高级编程语言&#xff0c;它被广泛应用于大数据处理、人工智能、数据分析、网络编程以及Web开发等领域中。在Python中&#xff0c;我们可以使用函数来封装复杂的业务逻辑&#xff0c;使代码更加可读、可维护和可扩展。在本文中&…

基于docker部署testlink并集成mantis

使用docker pull命令拉取需要的镜像。由于testlink和mantis都需要存储相关数据&#xff0c;所以这里可以看到还拉取了一个mysql镜像。 # docker pull bitnami/testlink:1.9.16-r8 # docker pull vimagick/mantisbt # docker pull mysql:5.7.20 使用docker network命令中创建…

Flutter重构开发

最近学习了flutter技术&#xff0c;然后用flutter技术重构了线上项目的首页板块&#xff0c;较深入的理解flutter的状态管理和ui组件的使用&#xff0c;总结下遇到的几点问题。 - 使用gex的controller报错 Don’t use one refreshController to multiple SmartRefresher,It w…

2021年长三角高校数学建模竞赛B题锅炉水冷壁温度曲线解题全过程文档及程序

2021年长三角高校数学建模竞赛 B题 锅炉水冷壁温度曲线 原题再现&#xff1a; 在燃煤发电过程中&#xff0c;锅炉是一种重要的热能动力设备。它通过在炉膛中燃烧煤粉释放热量&#xff0c;将水加热成一定温度&#xff08;或压力&#xff09;的蒸汽&#xff0c;蒸汽再推动汽轮机…

C4d渲染农场的定义、应用领域和未来发展趋势

Cinema 4D&#xff08;C4D&#xff09;是一款常用于3D动画、建模和渲染的软件&#xff0c;由Maxon Computer开发。随着CG行业的不断发展和应用场景的多样化&#xff0c;C4D渲染农场成为了CG制作中不可或缺的一环。本文将深入介绍C4D渲染农场的概念、特点、应用以及未来发展趋势…

信创办公–基于WPS的EXCEL最佳实践系列 (规整数据摆放)

信创办公–基于WPS的EXCEL最佳实践系列 &#xff08;规整数据摆放&#xff09; 目录 应用背景操作步骤1、数据排序2、例如&#xff1a;职务按照 经理-主任-职员 排序3、排列第二种方法4、实操案例5、案例练习一方法一&#xff1a;通过公式函数增加辅助列方法二&#xff1a;用辅…

二分查找笔记

1.1 什么是算法&#xff1f; 定义 在数学和计算机科学领域&#xff0c;算法是一系列有限的严谨指令&#xff0c;通常用于解决一类特定问题或执行计算 In mathematics and computer science, an algorithm (/ˈlɡərɪəm/) is a finite sequence of rigorous instructions, …

IO多路转接之select

本文分享的是IO多路转接中的select&#xff0c;其中包括select函数如何去使用&#xff0c;以及使用相关代码实现客户端向服务端发送消息的服务&#xff0c;从而更好地理解多路转接的select。 多路转接 多路转接是IO模型的一种&#xff0c;这种IO模型通过select函数进行IO等待&…

AI浪潮再掀低代码开发热,快来了解最新趋势!

在近些年的发展中&#xff0c;人工智能 (AI) 已融入我们社会和生活的方方面面。从聊天机器人和虚拟助手到自动化工业机械和自动驾驶汽车&#xff0c;我们已经越来越离不开AI技术了&#xff0c;哪怕是我们的日常生活中也充满了它的影子&#xff0c;我们很难忽视它的影响。 AI时代…

小程序、网页跳转App的原理

从不同的渠道&#xff0c;如小程序、二维码、网页等&#xff0c;直接跳转到App内对应的页面&#xff0c;并传递相关的参数信息&#xff0c;已经由拥有深度链接技术的SDK实现了&#xff0c;App只需接入这类SDK即可获得多样化跳转的功能。本文将详细介绍多样化跳转的原理。 多样…

Unity | HDRP高清渲染管线学习笔记:基本操作

目录 一、场景整体环境光强度 1.HDRI Sky 2.Shadows 二、屏幕后处理效果(Post Processing) 1.Exposure 2.Post-processing/Tonemapping 三、抗锯齿 四、添加光源 1.Light Explorer窗口 2.光照探针组 3.反射探针 4.烘焙光照贴图 本文主要是了解HDRP基本操作&#xf…