idea 搭建 SpringBoot 集成 mybatis

news2024/12/28 11:15:59

编译器:IDEA

环境:win10,jdk1.8,maven3.5

数据库:mysql 5.7

一、打开IDEA新建项目

1. 如果你是第一次使用IDEA,那么你需要配置你本地的maven,点击右下角 Configure,如已配置请忽略此步骤

在下拉框中选择setting,然后如下图操作,选择自己本地的maven路径与maven配置文件

点击OK

2.新建项目

点击Create New Project 后,弹出如下界面,选择Spring Initializer,然后可以使用编译器自带的JDK,也可以点击New,新建并使用自己本地目录下的JDK环境

当然你也可以选择Maven,使用Maven搭建自己的环境,但相信我,前者更为便捷

完成上述步骤,选择JDK之后,点击next,如下图

这里会提示我们输入一些项目信息,那么作为初学者,显然我们没有必要去较劲,请直接next,之后如下图

这里会为你准备许多开发时你需要用到的组件供你挑选,你尽管挑选你可能会用到的组件,然后打勾✔,编译器会在帮你创建项目时,在pom文件中替你写好这些组件需要用到的jar包,很贴心,有点小感动

如果你只是构建一个SpringBoot,你可以什么都不选直接跳过这一步

由于后期我们要集成mybatis,所以我们勾选mybatis

由于我们的数据库是mysql 5.7,那么我们要勾选mysql

勾选完成后点击next,如下图

此处提示我们输入一些工程信息,那么,作为初学者,点击next就好,不要在意这些细节...

点击之后效果如图,请点击右下角Enable Auto-Import ,允许编译器在你改变pom文件后自动导入包,另外,左侧显示的三处不必要的文件和文件夹可以删除,如图所示

完成上述步骤之后,项目结构及pom文件如下图

 至此一个SpringBoot项目构建完成,我们可以编写一个小小的demo来测试SpringBoot

3.SpringBoot 测试

首先在pom文件中添加如下依赖(非常重要的一个依赖)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

 由于我们暂时没有实体类与jdbc连接,所以我们必须要将pom文件中有关mysql与mybatis的pom依赖注释掉,如图

在demo包下,新建controller包,并新建一个类GirlFriendController,程序员有对象真的很容易啊,随手就能new一个...代码如下

package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GirlFriendController {
    
    @RequestMapping("/getgirlfriend")
    public String getGirlFriend(){
        return "No way ...";
    }
}

如图

 然后我们找到编译器为我们生成的主类,或者叫入口类,然后点击运行main方法,如图

 项目成功启动后,我们在浏览器输入  http://localhost:8080/getgirlfriend ,就能返回结果(此处不需要输入项目名称)

至此,SpringBoot框架搭建成功,下一步就是整合mybatis

4.整合mybatis

将我们之前注释掉的pom文件中的依赖放开,将注意力转至mysql数据库与mybatis上

首先,使用navcat打开mysql数据库并建立一张表girlfriend

 我们插入一条测试数据

 女神艾莉丝,19岁好吧,各位绅士,建表及测试数据脚本如下

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for girlfriend
-- ----------------------------
DROP TABLE IF EXISTS `girlfriend`;
CREATE TABLE `girlfriend`  (
  `id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `age` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of girlfriend
-- ----------------------------
INSERT INTO `girlfriend` VALUES ('1', 'Alice', '19');

SET FOREIGN_KEY_CHECKS = 1;

好的,那么表数据准备完成,下一步准备根据mysql的表实现mybatis相关内容

我们使用工具来生成

工具下载地址 https://pan.baidu.com/s/1RvwKlsmpKJQ_PJkuNjiPdw

下载后解压,解压后进入 Mybatis\mybatis-generator-core-1.3.2\lib 目录,如图所示

点击进入src目录,删除src目录下的全部文件(这是上次使用产生的实体类与xml,我们不需要)

编辑 generatorConfig.xml

 编辑完成generatorConfig.xml后,打开启动命令.txt,复制其中第一行或第二行命令,反正都一样...

然后点击cmd.exe

然后输入命令,如图,运行后提示成功信息

打开cmd.exe同目录下的src目录,我们会发现下面多了一些东西,如图

 没错,他们就是这款工具帮我们生成的实体类,dao类,与xml文件

接下来我们在项目目录中新建相应的包、文件夹,并将工具帮我们生成的类与文件拷贝至IDEA新建的包或文件夹中

拷贝完成之后的项目结构如下图所示

 然后,我们删除IDEA帮我们创建的 application.properties ,新建 application.yml,如图

配置代码如下

mybatis:
  typeAliasesPackage: com.xdd.entity
  mapperLocations: classpath:mapping/*.xml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

我们新建一个service包与service类,如图

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

package com.example.demo.service;

import com.example.demo.dao.GirlfriendMapper;

import com.example.demo.entity.Girlfriend;

import org.springframework.beans.factory.annotation.Autowired;<br>

@Service

public class GirlFriendService {

    @Autowired

    private GirlfriendMapper girlfriendMapper;

    public Girlfriend getGirlFriendById(String id){

        return girlfriendMapper.selectByPrimaryKey(id);

    }

}

  

然后我们再改造一下 GirlFriendController ,如图

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

package com.example.demo.controller;

import com.example.demo.entity.Girlfriend;

import com.example.demo.service.GirlFriendService;

import org.apache.ibatis.annotations.Param;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class GirlFriendController {

    @Autowired

    private GirlFriendService girlFriendService;

    @RequestMapping("/getgirlfriend")

    public Girlfriend getGirlFriend(@Param("id") String id){

        Girlfriend girlfriend = girlFriendService.getGirlFriendById(id);

        return girlfriend;

    }

}

 

 这时我们看到注入的  girlFriendService 在报错,我们打开编译器 file -》Project Structure -》Facets -》Spring ,然后将Spring(demo) 直接右键删除,确定,报错就解决了

然后我们再编辑入口类 DemoApplication ,添加扫描路径,代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

package com.example.demo;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

@MapperScan("com.example.demo.dao")

public class DemoApplication {

    public static void main(String[] args) {

        SpringApplication.run(DemoApplication.class, args);

    }

}

  至此大功告成,我们启动项目,在浏览器中输入 http://localhost:8080/getgirlfriend?id=1 ,就在此时,不料报错。。。。。。

1

2

3

4

5

Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_25]

    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_25]

    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_25]

    at java.lang.reflect.Constructor.newInstance(Constructor.java:408) ~[na:1.8.0_25]

  百度才知道这是mysql时区设置问题啊,美帝太坏了...

打开mysql命令行输入 

show variables like '%time_zone%'  

set global time_zone='+8:00';  

如图 ,搞定

再次在浏览器中输入 http://localhost:8080/getgirlfriend?id=1 ,效果如图

至此SpringBoot+mybatis框架搭建完成。

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

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

相关文章

第三章:Linux简介及面试常问问题

目录 一、Linux发展史 1.Linux前身-Unix 2.Linux诞生 3.开源文化 4.Linux系统特点 5.Linux操作系统优点 6.Linux操作系统发行版 7.Linux内核命名规则 二、Linux系统的安装 三、linux系统分区简介及如何分区 1.自动分区 2.手动分区 3.linux下查看分区信息和剩余空间…

STM32CubeMX安装

一、配置JAVA环境 1.相关资料链接 链接: CubeMX 提取码&#xff1a;13ec 双击改exe文件。 2.更改默认的安装路径 3.在该exe文件同等目录下&#xff0c;新建一个JAVA-Enviroment文件夹。 选择更改安装路径&#xff0c;放在刚才新建的JAVA-Enviroment文件夹中。 4.等待安装完…

RabbitMQ - 单机部署(超详细)

RabbitMQ部署 1.单机部署 我们在Centos7虚拟机中使用Docker来安装。 1.1.下载镜像 方式一&#xff1a;在线拉取 docker pull rabbitmq:3-management方式二&#xff1a;从本地加载 也可以从网上搜索 RabbitMQ 的 tar 包下载下来 上传到虚拟机中后&#xff0c;使用命令加载…

2023高校夏令营 | 第七年,我们又开营啦!

进入7月&#xff0c;成都的天气就不再像之前那样温和&#xff0c;迎接我们的是热浪滔天&#xff0c;以及一场场猝不及防的高温暴雨。如同当下的毕业季&#xff0c;脱离校园庇护的应届生们涌入就业市场&#xff0c;开始应对来自社会、职场的各种风雨考验。 为了加快推进产教融合…

js深拷贝、js使用递归实现深拷贝

相信看到这篇文章之前你应该多多少少了解过什么是深拷贝了为什么要什么拷贝了 这里就不介绍什么是深拷贝、浅拷贝了 最优解深拷贝方法&#xff1a;递归 这里为了方便直接在vue的页面里面演示了&#xff0c;在其他js文件中使用注意下this mounted() {const obj {str: "字…

实战解决百度旋转验证码

1、效果演示 2、如何识别 2.1准备数据集 首先需要使用爬虫&#xff0c;对验证码图片进行采集&#xff0c;尽量每一种类型都要采集到。 2.2图像矫正 接下来对采集的数据进行人工校正 2.3数据清洗 &#xff08;1&#xff09;对数据进行进行旋转&#xff0c;达到增加数据量的目…

44. 日期交叉问题

文章目录 题目需求思路一实现一原理二实现二学习链接题目来源 题目需求 现有各品牌优惠周期表&#xff08;promotion_info&#xff09;如下&#xff0c;其记录了每个品牌的每个优惠活动的周期&#xff0c;其中同一品牌的不同优惠活动的周期可能会有交叉。 现要求统计每个品牌…

聊一聊Java中的Steam流 | 京东物流技术团队

1 引言 在我们的日常编程任务中&#xff0c;对于集合的制造和处理是必不可少的。当我们需要对于集合进行分组或查找的操作时&#xff0c;需要用迭代器对于集合进行操作&#xff0c;而当我们需要处理的数据量很大的时候&#xff0c;为了提高性能&#xff0c;就需要使用到并行处…

Golang内存分配及垃圾回收

为什么需要垃圾回收&#xff1f; 自动释放不需要的对象&#xff0c;让出存储器资源&#xff0c;无需程序员手动执行 Go V1.3之前是标记-清除算法 具体步骤 缺点&#xff1a;程序卡顿、扫描整个heap、数据清除会产生heap碎片 V1.3之后&#xff0c;做了简单的优化 V1.5之后&a…

AIFORE Smart Fuzzing Based on Automatic Input Format Reverse Engineering

AIFORE: Smart Fuzzing Based on Automatic Input Format Reverse Engineering 1 中国科学院信息工程研究所2清华大学网络科学与网络空间研究院;中关村实验室3华为技术有限公司奇异安全实验室4中国科学院大学网络安全学院5中国人民大学6洛桑联邦理工学院 论文链接 &#xff1a…

PHP实战开发26-使用PHP生成图片验证码并进行校验

文章目录 一、前言二、什么是验证码&#xff1f;三、PHP生成验证码图像3.1 生成验证码文字3.2 创建图像并绘制验证码文字3.3 将验证码存储到Session中 四、前端使用jQuery验证输入4.1 步骤一&#xff1a;创建HTML结构和CSS样式4.2 使用jQuery发送AJAX请求进行校验4.3 步骤三&am…

Head Pose Estimation头部姿态估计任务的基本了解:从数据集开始

目录 前言一、HPE是什么&#xff1f;二、常用数据集1.COFW2.WFLW3.AFLW2000-3D4.300W-LP 三、SOTA workCVPR2022:SynergyNetCVPR2021 Workshop:ASMNet 四、我们想做的贡献 前言 为了检测司机的疲劳状态&#xff0c;除了基于人脸关键点的检测去判断是否闭眼&#xff0c;是否打哈…

基础算法-差分

差分其实就是求前缀和的逆运算 差分数组&#xff1a; Step1 首先给定一个原数组a&#xff1a;a[1], a[2], a[3],,,,,, a[n]; 然后我们构造一个数组b &#xff1a; b[1] ,b[2] , b[3],,,,,, b[i]; 使得 a[i] b[1] b[2 ] b[3] ,,,,,, b[i] 也就是说&#xff0c;a数组是b…

nvm升级node版本

1.首先有安装nvm和配置环境的前提 2、命令查看&#xff0c;切换到D盘目录下 3、安装到指定的版本 nvm安装指定版本的node 输入&#xff1a;nvm install 16.18.1 4、查看已有的node版本 nvm list 5、项目终端查看

【uniapp开发小程序】实现点击跳转手机通话 拨打电话功能

效果图&#xff1a; 代码展示&#xff1a; <template><view class"page-map"><view class"btn" click"telFun()" style"text-align: center;">电话咨询</view></view> </template> <script&g…

如何使用idea来查找所有未使用的代码?

一、目的 通过idea快速找到项目中没有被使用的代码 二、操作步骤 2.1 Code -> Analyze Code -> Run Inspection by Name 2.2 输入Unused declaration -> 查询没有被使用的方法和类 2.3 选择要扫描的范围 2.4 根据结果进行删除&#xff08;反复几次就可以清除干净&a…

如何获取局域网内海康摄像头的IP地址

文章目录 问题解决方法图像分类网络AlexNetVGGNetGooLeNet系列ResNetDenseNetSwin TransformerMAECoAtNetConvNeXtV1、V2MobileNet系列MPViTVITSWAEfficientNet系列MOBILEVITEdgeViTsMixConvRepLKNetTransFGConvMAEMicroNetRepVGGMaxViTMAFormerGhostNet系列DEiT系列MetaFormer…

linux 写c, 编译报错 stdio.h: No such file or directory,compilation terminated.

环境: windows11->subsystem(Ubuntu20)问题: linux 写c, 编译报错如图(fatal error: stdio.h: No such file or directory │compilation terminated. #include <stdio.h>) 复现: #include <stdio.h>int main() {printf("gcc编译报错: \n")return 0;…

产研融合共育人才 金山云“星云训练营”顺利开营

盛夏之日&#xff0c;万物并秀&#xff01;在莘莘学子告别校园、踏入社会的毕业季&#xff0c;金山云第一期星云训练营于7月9日在武汉隆重开营。金山云星云训练营承载着“技术立业”的企业基因&#xff0c;旨在助力学子提升专业技能&#xff0c;掌握前沿技术&#xff0c;为国家…

(02)Cartographer源码无死角解析-(78) ROS数据发布→子图内、子图间、约束与残差发布

讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/127350885 文…