IDEA搭建SpringBoot,MyBatis,Mysql工程项目

news/2024/12/21 14:00:17/

目录

一、前言

二、项目结构

三、初始化项目

四、SpringBoot项目集成Mybatis编写接口

五、代码仓库


一、前言

   构建一个基于Spring Boot框架的现代化Web应用程序,以满足[公司/组织名称]对于[业务需求描述]的需求。通过利用Spring Boot简化企业级应用开发的优势,实现一个高效、可扩展且易于维护的应用系统。

  • 提高效率:通过集成微服务架构模式,减少系统的复杂度,并加速开发周期。
  • 增强用户体验:提供一个响应迅速、界面友好且功能齐全的用户交互平台。
  • 确保数据安全:实施严格的数据保护措施,保障用户信息安全。
  • 支持跨平台访问:设计RESTful API接口,确保应用程序可以在多种设备上无缝运行。

二、项目结构

项目遵循Maven标准目录布局,主要分为以下几个模块:

  • core:包含业务逻辑层代码。

  • exception:包含各个异常捕捉类。

  • mapper:定义了数据访问对象,用于与数据库交互。

  • service:提供了对外的服务接口。

  • entity:项目实体类

  • controller:处理HTTP请求并调用相应的服务方法。

  • config:存放所有配置文件。

  • test:单元测试及集成测试代码。

  • common:公共类,统一包装。

三、初始化项目

点击新建项目

根据以下图片创建

选择框架依赖

设置文件编码统一为UTF-8

检查Maven构建项目的目录

以下pom.xml文件已经加载,如果没有出现xml文件则需右键点击构建Maven项目即可

application配置文件,因为框架中选择了数据库,使用需要配置数据库,mybatis依赖在后续集成时,可添加以下配置。

# 应用服务 WEB 访问端口
server:port: 9090
#数据库配置
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverusername:  rootpassword: 123456//(本机数据库密码)url: jdbc:mysql://localhost:3306/userdb//(本机数据库)
//#mybatis依赖
//# mybatis:
//# MyBatis Configuration确保在 application.properties 或 application.yml 文件中指定了正确的映射文件路径// mapper-locations: classpath:mapper/*.xml// configuration://   log-impl: org.apache.ibatis.logging.stdout.StdOutImpl//   map-underscore-to-camel-case: true

到此项目配置成功! 

四、SpringBoot项目集成Mybatis编写接口

接下来我们将实现一个简单的用户列表获取接口,以下是具体的分层结构

Result类

package com.example.springboot.common;
//统一设置包装类,返回数据的类型
public class Result {private Integer code;  // 状态码private String message;  // 消息private Object data;  // 数据// 默认成功的构造方法// 成功但没有数据时的静态方法public static Result success() {Result result =new Result();result.setCode(200);result.setMessage("请求成功");return result;}public static Result success(Object data) {Result result =success();result.setData(data);return result;}// 静态方法用于快速构建结果对象public static Result error() {Result result =new Result();result.setCode(500);result.setMessage("请求成功");return result;}// Getters and Setterspublic Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}// 打印结果对象信息的方法(可选)@Overridepublic String toString() {return "Result{" +"code=" + code +", message='" + message + '\'' +", data=" + (data != null ? data.toString() : "null") +'}';}
}

UserController控制层提供访问接口localhost:9090/user/selectAll

package com.example.springboot.controller;import com.example.springboot.common.Result;
import com.example.springboot.service.UserService;
import com.example.springboot.entity.user;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@RequestMapping("/user")
public class UserController {
@Resourceprivate UserService userservice;
//查询所有用户@GetMapping("/selectAll")public Result selectAll(){List<user>list=userservice.selectAll();return  Result.success(list);}
}

User类实体类,需要对应相应数据库

package com.example.springboot.entity;import org.apache.ibatis.annotations.Mapper;//entity包里面装着实体类
public class user {private  String userID;private  String userName;private  String userPassword;private  Integer userAge;public String getUserID() {return userID;}public void setUserID(String userID) {this.userID = userID;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserPassword() {return userPassword;}public void setUserPassword(String userPassword) {this.userPassword = userPassword;}public Integer getUserAge() {return userAge;}public void setUserAge(Integer userAge) {this.userAge = userAge;}}

UserMapper接口连接数据库操作,在对应的Mybastis映射文件下,上文中的application配置文件中的路径一致,添加UserMapper.xml文件

package com.example.springboot.mapper;import com.example.springboot.entity.user;import java.util.List;//数据库userBean层
public interface UserMapper {List<user> selectAll();
}

安装插件MyBatisX可快速查看映射方法

 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.example.springboot.mapper.UserMapper"><!-- SQL 映射语句将在此处定义 --><select id="selectAll" resultType="com.example.springboot.entity.user">SELECT * FROM user_list</select>
</mapper>

UserService类,提供项目业务逻辑层

package com.example.springboot.service;import com.example.springboot.mapper.UserMapper;
import com.example.springboot.entity.user;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;import java.util.List;//业务逻辑层
@Service
public class UserService {@Resourceprivate UserMapper userMapper;public List<user> selectAll() {List<user> list = userMapper.selectAll();return list;}
}

 在启动文件中添加扫描路径

@MapperScan("com.example.springboot.mapper")

 

点击运行即可!欢迎大家一起学习讨论,批评指正~

五、代码仓库

具体代码仓库

200K/SpringBooticon-default.png?t=O83Ahttps://gitee.com/tanzero/spring-boot.git


http://www.ppmy.cn/news/1556943.html

相关文章

STM32 水质水位检测项目(硬件架构)及(软件架构)

硬件选型 水位测量模块 TDS采集模块 外置ADC模块&#xff08;ADS1115&#xff09; 水位测量模块使用方法 水位测量原理 压力传感器&#xff1a;水越深压力越大 P ρgh Fps Fρgh*s P大气压 水位测量传感器本质上是一个压力测量传感器。压力的值和传感器产生的电压值是线…

高并发-缓存预热

缓存预热的必要性 缓存预热是为了在系统面临高并发请求时&#xff0c;确保热点数据已经被加载到缓存中&#xff0c;从而提高系统响应速度和稳定性。通过缓存预热&#xff0c;可以避免因数据未命中而导致的数据库压力激增。 典型应用场景 电商系统&#xff1a;在秒杀活动期间&…

git bash中文显示问题

个人博客地址&#xff1a;git bash中文显示问题 | 一张假钞的真实世界。 默认情况下git bash中文以ASCII编码&#xff0c;不方便查看&#xff0c;如下&#xff1a; $ git status 位于分支 master尚无提交要提交的变更&#xff1a;&#xff08;使用 "git rm --cached <…

GTID详解

概念和组成 1&#xff0c;全局事务表示&#xff1a;global transaction identifiers 2, GTID和事务一一对应&#xff0c;并且全局唯一 3&#xff0c;一个GTID在一个服务器上只执行一次 4&#xff0c;mysql 5.6.5开始支持 组成 GTID server_uuid:transaction_id 如&#xf…

vimdc

set nocompatible filetype on set rtp~/.vim/bundle/Vundle.vim call vundle#begin() " 这里根据自己需要的插件来设置&#xff0c;以下是我的配置 " " " YouCompleteMe:语句补全插件 set runtimepath~/.vim/bundle/YouCompleteMe autocmd InsertLe…

智能座舱进阶-应用框架层-Handler分析

首先明确&#xff0c; handler是为了解决单进程内的线程之间的通信问题的。我也需要理解Android系统中进程和线程的概念&#xff0c; APP启动后&#xff0c;会有三四个线程启动起来&#xff0c;其中&#xff0c;有一条mainUITread的线程&#xff0c;专门用来处理UI事件&#xf…

Android笔记【20】

问题1&#xff1a;val student:Student?intent.getParcelableExtra("data",Student::class.java) 这啥意思 以及用途 解答 这一行代码的意思是从一个 Intent 中获取一个可选的 Student 对象。具体解释如下&#xff1a; 解析代码 val student: Student? intent.ge…

单元测试使用记录

什么是单元测试 简单来说就是对一个类中的方法进行测试&#xff0c;对输出的结果检查判断是否符合预期结果 但是在多年的工作中&#xff0c;从来没有哪个项目中真正系统的用到了单元测试&#xff0c;因此对它还是很陌生的&#xff0c;也就造成更加不会在项目中区使用它。 如何…