当前位置: 首页 > news >正文

SpringBoot-搭建集成Mybatis的项目

本文介绍了如何在IntelliJ IDEA中使用SpringBoot和Mybatis构建Java Web应用程序。通过本文的学习,读者将了解如何使用IntelliJ IDEA快速搭建一个基于SpringBoot和Mybatis的Java Web应用程序,提高开发效率。IntelliJ IDEA是一款功能强大的Java集成开发环境(IDE),提供了各种工具和插件,可帮助开发者快速构建各种类型的Java应用程序。

一、搭建SpringBoot-Mybatis项目

1、新建SpringBoot项目

没有下载过IntelliJ IDEA的朋友,可以参考安装教程(Windows安装IntelliJ IDEA)

  • ① 服务器URL换成国内镜像站https://start.aliyun.com/
  • ② 输入项目名称 ProjectManage
  • ③ 指定项目存储位置(根据需要勾选是否创建Git仓库)
  • ④ 类型选maven
  • ⑤ 组我自定义的com,默认是com.example
  • ⑥ 软件包只写com就可以了,这个我当时没注意,在后面改掉了
  • ⑦ 重要!!!选择 Java8,这是目前 Java 三个长期维护版本里,维护计划最长的,至少到2026年,Java8 也是目前企业里最常用的版本,电脑上没有装 JDK 的可以参考我之前的文章(怎样在Windows系统下载安装JDK?),这里 JDK 1.8是 Java8 的配套 JDK。

Spring Boot 版本选一个尽可能低的版本,3.0 以上好像会有兼容问题,这里我选的 2.7.11 。
依赖项添加四个:

  • ① Lombok
  • ② Spring Web
  • ③ MySQL Driver (这个是MySQL驱动,如果其他数据库换成其他驱动)
  • ④ Mybatis Framework
  • ⑤ Spring Data Redis (Access + Driver) (后面如果需要用到redis的话可以一并勾选)

勾选好后,点击创建。

创建成功后,项目目录如下:

pom.xml是Maven的配置文件,如果需要导入新的jar包,只需要在这里面配置,然后刷新,即可自动下载导入。


2、新建application.yml和application-dev.yml

resources下删除原有的application-properties配置文件,新建两个文件:

① application.yml
spring:profiles:active: devthymeleaf:view-names: /*cache: falseprefix: /WEB-INF/html

② application-dev.yml
server:#指定服务端口port: 8080spring:datasource:#替换成MySQL账户username: ******#替换成MySQL密码password: ******#替换成数据库名url: jdbc:mysql://localhost:3306/******?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTCdriver-class-name: com.mysql.jdbc.Drivermybatis:mapper-locations: classpath:mappers/*Mapper.xmltype-aliases-package: com.entity#showSql
logging:level:com:example:mapper : debug

这里指定了com.entity,所有我们要新建好对应的文件夹。


二、创建项目文件

按照控制器->服务层->持久层->映射文件->实体的顺序依次编写

1、创建文件夹目录

java/com下四个:controller、service(及子目录impl)、dao、entity
resources下一个:mappers


2、创建项目文件

按照下图依次创建java文件:

① UserController.java
package com.controller;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import com.entity.User;
import com.service.UserService;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;@RestController
public class UserController {@Resourceprivate UserService userService;@RequestMapping("user")public String getTotal(User user,HttpServletRequest request)throws Exception{Map<String,Object> map = new HashMap<>();Long userCount =userService.getTotal(map);return userCount.toString();}}
② UserDao.java
package com.dao;import java.util.List;
import java.util.Map;
import com.entity.User;public interface UserDao {public Long getTotal(Map<String,Object> map);
}
User.javapackage com.entity;public class User {private Integer id; // 编号private String userName; // 用户名private String password; // 密码private String trueName; // 真实姓名private String email; // 邮件private String phone; // 联系电话private String roleName; // 角色名称 系统管理员 销售主管 客户经理 高管public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getTrueName() {return trueName;}public void setTrueName(String trueName) {this.trueName = trueName;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getRoleName() {return roleName;}public void setRoleName(String roleName) {this.roleName = roleName;}
}
③ UserService.java
package com.service;import java.util.List;
import java.util.Map;
import com.entity.User;public interface UserService {public Long getTotal(Map<String,Object> map);
}
④ UserServiceImpl.java
package com.service.impl;import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.dao.UserDao;
import com.entity.User;
import com.service.UserService;@Service("userService")
public class UserServiceImpl implements UserService{@Resourceprivate UserDao userDao;@Overridepublic Long getTotal(Map<String, Object> map) {return userDao.getTotal(map);}
}
⑤ UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.UserDao"><resultMap type="User" id="UserResult"><result property="id" column="id"/><result property="userName" column="userName"/><result property="password" column="password"/><result property="trueName" column="trueName"/><result property="email" column="email"/><result property="phone" column="phone"/><result property="roleName" column="roleName"/></resultMap><select id="getTotal" parameterType="Map" resultType="Long">select count(*) from t_user</select>
</mapper>

3、启动类添加MapperScan注解

启动类前添加@MapperScan(“com.dao”)注解,这样才能检索到dao层文件。


三、测试项目是否成功运行

1、启动类的同级或子目录下创建测试控制器

启动配置文件在.idea文件夹下面,里面指定了启动类(包含main函数的类)。启动类默认是 xxxApplication (xxx为项目名),所有的类想要被访问,必须放在启动类的同级或子目录下,否则会因为找不到而提示404。

接着,我们创建测试控制器HelloWorldController。

package com.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloWorldController {@GetMapping("hello")public String hello() {return "hello world";}
}

2、运行项目,看测试控制器是否可以访问并正确运作

右上方运行项目,输入localhost:8080/hello,如果按照预期返回值,便是搭建成功。


四、测试项目的MyBatis是否生效

1、通过 "/user" 接口测试

同样,我们启动项目。

输入localhost:8080/user,访问我们基于MyBatis的控制器。

2、检查测试结果

这里返回的是我们getTotal()函数获得的t_user表的行数,表明已经成功连接到数据库,我们Mybatis的搭建成功了。

以上就是我们IntelliJ IDEA搭建SpringBoot-Mybatis项目的全部教程,如果有疑问,或者过程中出现解决不了的问题,欢迎评论区留言。

相关文章:

SpringBoot-搭建集成Mybatis的项目

本文介绍了如何在IntelliJ IDEA中使用SpringBoot和Mybatis构建Java Web应用程序。通过本文的学习&#xff0c;读者将了解如何使用IntelliJ IDEA快速搭建一个基于SpringBoot和Mybatis的Java Web应用程序&#xff0c;提高开发效率。IntelliJ IDEA是一款功能强大的Java集成开发环境…...

mysql隐式转换规则

MySQL 中的隐式类型转换发生在比较操作或者其他一些需要特定数据类型参数的上下文中&#xff0c;如果参与操作的表达式或列的数据类型不匹配&#xff0c;MySQL 就会自动进行数据类型转换以适配预期的数据类型。 以下是 MySQL 的一些常见隐式转换规则&#xff1a; 字符串和数字…...

怎么解决 Nginx反向代理加载速度慢?

Nginx反向代理加载速度慢可能由多种原因引起&#xff0c;以下是一些可能的解决方法&#xff1a; 1&#xff0c;网络延迟&#xff1a; 检查目标服务器的网络状况&#xff0c;确保其网络连接正常。如果目标服务器位于不同的地理位置&#xff0c;可能会有较大的网络延迟。考虑使用…...

Eureka工作原理超详细讲解介绍

Eureka 是 Netflix 开源的一款服务注册与发现框架&#xff0c;主要用于构建分布式系统中的服务治理和负载均衡。下面是关于 Eureka 工作原理的详细介绍&#xff1a;1.Eureka 架构&#xff1a; Eureka 采用了客户端-服务器架构&#xff0c;包括 Eureka Server 和 Eureka Client …...

SQL WHERE 语句(条件选择)

WHERE 子句用于过滤记录。 SQL WHERE 子句 WHERE 子句用于提取那些满足指定条件的记录。 SQL WHERE 语法 SELECT column1, column2, ... FROM table_name WHERE condition; 参数说明&#xff1a; column1, column2, ...&#xff1a;要选择的字段名称&#xff0c;可以为多…...

用UCLI(TCL)控制verdi dump 波形

UCLI&#xff08;Unified Command-line Interface&#xff09;为Synopsys验证工具了提供一组通用命令&#xff0c;通过UCLI可以执行任意TCL&#xff08;Tool Command Language&#xff09;命令。在我们的验证环境中&#xff0c;通常跟ucli打交道的地方是用来控制开始dump和结束…...

如何使用 Python+selenium 进行 web 自动化测试?

Selenium是一个自动化测试工具&#xff0c;它可以模拟用户在浏览器中的操作&#xff0c;比如点击、输入、选择等等。它支持多种浏览器&#xff0c;包括Chrome、Firefox、Safari等等&#xff0c;并且可以在多个平台上运行。 安装和配置Selenium 在使用Selenium之前&#xff0c;…...

约瑟夫问题

约瑟夫问题 题目描述 n n n 个人围成一圈&#xff0c;从第一个人开始报数,数到 m m m 的人出列&#xff0c;再由下一个人重新从 1 1 1 开始报数&#xff0c;数到 m m m 的人再出圈&#xff0c;依次类推&#xff0c;直到所有的人都出圈&#xff0c;请输出依次出圈人的编号。…...

文件管理方法:利用文件大小进行筛选,高效移动文件至目标文件夹

在日常工作中&#xff0c;文件管理是一项至关重要的任务。为了更高效地管理文件&#xff0c;可以利用文件大小进行筛选&#xff0c;并将文件快速移动至目标文件夹。接下来一起来看看云炫文件管理器如何利用文件大小进行筛选&#xff0c;以及如何高效移动文件至目标文件夹的方法…...

python报错:TypeError: Descriptors cannot be created directly.

问题 报错提示&#xff1a; TypeError&#xff1a;不能直接创建描述符。 如果此调用来自 _pb2.py 文件&#xff0c;则您生成的代码已过期&#xff0c;必须使用 protoc > 3.19.0 重新生成。 如果您不能立即重新生成原型&#xff0c;其他一些可能的解决方法是&#xff1a; 1.…...

Linux 内核调试

文章目录 一、方法论 一、方法论 qemu 虚拟机 Linux内核学习 Linux 内核调试 一&#xff1a;概述 Linux 内核调试 二&#xff1a;ubuntu20.04安装qemu Linux 内核调试 三&#xff1a;《QEMU ARM guest support》翻译 Linux 内核调试 四&#xff1a;qemu-system-arm功能选项整…...

Prometheus-AlertManager 邮件告警

环境,软件准备 本次演示环境&#xff0c;我是在虚拟机上安装 Linux 系统来执行操作&#xff0c;以下是安装的软件及版本&#xff1a; System: CentOS Linux release 7.6Docker: 24.0.5Prometheus: v2.37.6Consul: 1.6.1 docker 安装prometheus,alertmanage,说明一下这里直接将…...

Volcano Controller控制器源码解析

Volcano Controller控制器源码解析 本文从源码的角度分析Volcano Controller相关功能的实现。 本篇Volcano版本为v1.8.0。 Volcano项目地址: https://github.com/volcano-sh/volcano controller命令main入口: cmd/controller-manager/main.go controller相关代码目录: pkg/co…...

开源协议简介和选择

软件国产化已经提到日程上了&#xff0c;先来研究一下开源协议。 引言 在追求“自由”的开源软件领域的同时不能忽视程序员的权益。为了激发程序员的创造力&#xff0c;现今世界上有超过60种的开源许可协议被开源促进组织&#xff08;Open Source Initiative&#xff09;所认可…...

大创项目推荐 深度学习卫星遥感图像检测与识别 -opencv python 目标检测

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐…...

pod的环节

pod 是k8s当中最小的资源管理组件 Pod也是最小化运行容器化的应用的资源管理对象 Pod是一个抽象化的概念&#xff0c;可以理解为一个或多个容器化的集合 在一个pod当中运行一个容器&#xff0c;是最常用的方式 在一个pod当中同时运行多个容器&#xff0c;在一个pod当中可以…...

Unity | Shader基础知识番外(向量数学知识速成)

目录 一、向量定义 二、计算向量 三、向量的加法&#xff08;连续行走&#xff09; 四、向量的长度 五、单位向量 六、向量的点积 1 计算 2 作用 七、向量的叉乘 1 承上启下 2 叉乘结论 3 叉乘的计算&#xff08;这里看不懂就百度叉乘计算&#xff09; 八、欢迎收…...

一个小白的微不足道的见解关于未来

随着科技的不断发展&#xff0c;IT行业日益壮大&#xff0c;运维工程师在其中扮演着至关重要的角色。他们负责维护和管理企业的技术基础设施&#xff0c;确保系统的正常运行。然而&#xff0c;随着技术的进步和行业的变化&#xff0c;运维工程师的未来将面临着一系列挑战和机遇…...

图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

一、图的遍历的定义&#xff1a; 从图的某个顶点出发访问遍图中所有顶点&#xff0c;且每个顶点仅被访问一次。&#xff08;连通图与非连通图&#xff09; 二、深度优先遍历&#xff08;DFS&#xff09;&#xff1b; 1、访问指定的起始顶点&#xff1b; 2、若当前访问的顶点…...

抖店做不起来?新手常见起店失败问题总结,看下你中了几条?

我是王路飞。 能看到这篇文章的&#xff0c;肯定是处境符合标题内容了。 抖店的门槛很低&#xff0c;运营思路其实也不算难&#xff0c;但就是很多新手做不起来。 这中间&#xff0c;可能跟平台、项目没什么关系&#xff0c;而是跟你自己有关系&#xff0c;走错了方向&#…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...