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

spring项目详细结构目录

这里写目录标题

  • 一、项目结构
    • 1、model模型类Student
    • 2、mapper 数据访问层接口和映射文件
      • 接口类StudentMapper
      • 接下来创建名为 StudentMapper.xml 的映射文件
    • 3、service 服务层接口和实现类
      • 创建名为 StudentService 的 Java 接口
      • 创建名为 StudentServiceImpl 的实现类
    • 4、controller
    • 5、配置 resources
      • 5-1、mapper
      • 5-2、mysqldb.properties
      • 5-3、spring.xml
      • 5-4、springmvc.xml

controller 存放控制器(Controller)类,处理请求和返回响应。
mapper 存放数据访问层(Mapper)接口和对应的XML文件。
model 存放模型(Model)类,与数据库表对应。
service 存放服务(Service)接口和实现类
impl

resources
mapper文件 存放Mapper接口对应的XML文件,定义SQL语句和映射关系。
mybatis-config.xml:MyBatis的主配置文件,配置数据库连接等全局设置。
db.properties:数据库连接信息的配置文件。

project-name
├── src
│   ├── main
│   │   ├── java        # Java代码目录
│   │   │   ├── com.example.project.controller      # 控制器包
│   │   │   ├── com.example.project.mapper          # Mapper接口和XML文件包
│   │   │   ├── com.example.project.model           # 模型包
│   │   │   ├── com.example.project.service         # 业务逻辑包
│   │   │   └── com.example.project.util            # 工具类包
│   │   ├── resources   # 资源目录
│   │   │   ├── mapper  # 存放Mapper对应的XML文件
│   │   │   ├── mybatis-config.xml                  # MyBatis主配置文件
│   │   │   └── db.properties                       # 数据库连接配置文件
│   │   └── webapp      # Web资源目录
│   │       ├── WEB-INF # Web应用配置目录
│   │       │   ├── web.xml                         # Web应用配置文件
│   │       │   └── spring.xml                      # Spring配置文件(如果使用Spring)
│   │       ├── index.jsp                           # 首页JSP文件
│   │       └── static                              # 静态资源目录
│   │           ├── css                             # CSS文件目录
│   │           ├── js                              # JavaScript文件目录
│   │           └── images                          # 图片目录
└── pom.xml             # Maven项目配置文件

一、项目结构

1、model模型类Student

public class Student {private Long id;private String name;private Integer age;private String gender;// getter 和 setter 方法省略
}

2、mapper 数据访问层接口和映射文件

接口类StudentMapper

// 2. 定义数据访问层接口和映射文件package com.example.mapper;public interface StudentMapper {void insert(Student student);                   // 插入学生信息void delete(Long id);                           // 删除学生信息void update(Student student);                   // 更新学生信息Student selectById(Long id);                     // 根据ID查询学生信息List<Student> selectAll();                       // 查询所有学生信息
}

接下来创建名为 StudentMapper.xml 的映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<!-- StudentMapper.xml -->
<!-- 映射SQL语句和Java对象之间的关系 -->
<mapper namespace="com.example.mapper.StudentMapper"><!-- 定义结果映射 --><resultMap id="StudentResultMap" type="com.example.model.Student"><id column="id" property="id"/><result column="name" property="name"/><result column="age" property="age"/><result column="gender" property="gender"/></resultMap><!-- 插入学生信息 --><insert id="insert" parameterType="com.example.model.Student">INSERT INTO student(name, age, gender) VALUES(#{name}, #{age}, #{gender})</insert><!-- 删除学生信息 --><delete id="delete" parameterType="java.lang.Long">DELETE FROM student WHERE id=#{id}</delete><!-- 更新学生信息 --><update id="update" parameterType="com.example.model.Student">UPDATE student SET name=#{name}, age=#{age}, gender=#{gender} WHERE id=#{id}</update><!-- 根据ID查询学生信息 --><select id="selectById" resultMap="StudentResultMap">SELECT * FROM student WHERE id=#{id}</select><!-- 查询所有学生信息 --><select id="selectAll" resultMap="StudentResultMap">SELECT * FROM student</select></mapper>

3、service 服务层接口和实现类

创建名为 StudentService 的 Java 接口

// 3. 定义服务层接口和实现类package com.example.service;public interface StudentService {void add(Student student);                  // 添加学生信息void remove(Long id);                       // 删除学生信息void modify(Student student);               // 修改学生信息Student findById(Long id);                  // 根据ID查询学生信息List<Student> findAll();                    // 查询所有学生信息
}

创建名为 StudentServiceImpl 的实现类

@Service
public class StudentServiceImpl implements StudentService {@Autowiredprivate StudentMapper studentMapper;@Overridepublic void add(Student student) {studentMapper.insert(student);}@Overridepublic void remove(Long id) {studentMapper.delete(id);}@Overridepublic void modify(Student student) {studentMapper.update(student);}@Overridepublic Student findById(Long id) {return studentMapper.selectById(id);}@Overridepublic List<Student> findAll() {return studentMapper.selectAll();}
}

4、controller

创建名为 StudentController 的 Java 类

// 4. 编写控制器类@Controller
public class StudentController {@Autowiredprivate StudentService studentService;// 处理显示学生列表的请求@GetMapping("/students")public ModelAndView showStudents() {List<Student> students = studentService.findAll();ModelAndView mav = new ModelAndView("students");    // 返回视图名为"students"mav.addObject("students", students);                // 将学生列表添加到模型中return mav;}// 处理显示添加学生页面的请求@GetMapping("/students/new")public ModelAndView showAddStudentForm() {ModelAndView mav = new ModelAndView("add_student_form");   // 返回视图名为"add_student_form"mav.addObject("student", new Student());                  // 创建一个空的学生对象,并添加到模型中return mav;}// 处理提交添加学生的请求@PostMapping("/students")public String addStudent(@ModelAttribute("student") Student student) {studentService.add(student);return "redirect:/students";     // 重定向到学生列表页面}// 处理显示修改学生页面的请求@GetMapping("/students/{id}/edit")public ModelAndView showEditStudentForm(@PathVariable Long id) {Student student = studentService.findById(id);ModelAndView mav = new ModelAndView("edit_student_form");    // 返回视图名为"edit_student_form"mav.addObject("student", student);                           // 将要修改的学生对象添加到模型中return mav;}// 处理提交修改学生的请求@PutMapping("/students/{id}")public String updateStudent(@PathVariable Long id, @ModelAttribute("student") Student student) {student.setId(id);studentService.modify(student);return "redirect:/students";     // 重定向到学生列表页面}// 处理删除学生的请求@DeleteMapping("/students/{id}")public String deleteStudent(@PathVariable Long id) {studentService.remove(id);return "redirect:/students";     // 重定向到学生列表页面}
}

5、配置 resources

在resources进行配置

5-1、mapper

在resources新建一个mapper文件
存放Mapper接口对应的XML文件,定义SQL语句和映射关系。

5-2、mysqldb.properties

数据库连接信息的配置文件。

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/student?useSSL=false
user=root
pwd=123456789

5-3、spring.xml

配置 Spring 容器和 MyBatis 相关内容,如数据源、事务管理等

<!-- 配置数据源 -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"><property name="driverClassName" value="${spring.datasource.driver-class-name}"/><property name="jdbcUrl" value="${spring.datasource.url}"/><property name="username" value="${spring.datasource.username}"/><property name="password" value="${spring.datasource.password}"/><property name="minimumIdle" value="${spring.datasource.hikari.minimumIdle}"/><property name="maximumPoolSize" value="${spring.datasource.hikari.maximumPoolSize}"/>
</bean><!-- 配置 SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean><!-- 配置 MapperScannerConfigurer -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.example.mapper"/>
</bean><!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/>
</bean><!-- 开启基于注解的事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>

5-4、springmvc.xml

配置 SpringMVC 相关内容,例如视图解析器、处理器映射等

<mvc:annotation-driven/><bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/>
</bean><mvc:resources mapping="/static/**" location="/static/"/><mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/><bean class="com.example.interceptor.TimeInterceptor"></bean></mvc:interceptor>
</mvc:interceptors>

相关文章:

spring项目详细结构目录

这里写目录标题 一、项目结构1、model模型类Student2、mapper 数据访问层接口和映射文件接口类StudentMapper接下来创建名为 StudentMapper.xml 的映射文件 3、service 服务层接口和实现类创建名为 StudentService 的 Java 接口创建名为 StudentServiceImpl 的实现类 4、contro…...

Cygwin 和MinGW 的区别与联系

Cygwin&#xff0c;是Cygnus出品&#xff0c;被Red Hat公司收购&#xff0c;名下的项目&#xff0c;目的为提供运行于windows平台的类Unix环境&#xff08;以GNU工具为代表&#xff09;。Cygwin提供了抽象层dll&#xff0c;用于将部分POSIX转换为Windows API调用&#xff0c;目…...

WebSocket Day03 : SpringMVC整合WebSocket

前言 在现代Web应用程序中&#xff0c;实时性和即时通信变得越来越重要。传统的HTTP请求-响应模式无法满足实时数据传输和双向通信的需求。随着技术的发展&#xff0c;WebSocket成为了一种强大而灵活的解决方案。 WebSocket是HTML5提供的一种新的通信协议&#xff0c;它通过一…...

Electron + VUE3 桌面应用,主进程和渲染进程通信

之前写过篇主进程和渲染进程之间的通信,这里主要是记录一下VUE版本的应用,主进程和渲染进程之间的通信。思路是一样,唯一不同的是代码。 在开发Electron应用的时候,从安全的角度来考虑,尽量不要在渲染进程中,直接调用ElectronAPI,因此我们需要预加载JS脚本,在这个脚本…...

使用腾讯云轻量服务器安装AList

新人有免费两个月试用轻量服务器&#xff0c;使用云服务器商自带的webshell登录&#xff1b; 我这儿用docker安装Alist&#xff0c;因为服务器没自带docker&#xff0c;所以具体安装docker centos7.0最快速安装docker的方法 通过 Docker 部署 Alist 命令&#xff1a; docke…...

边缘计算助力低速无人驾驶驶入多场景落地快车道

自动驾驶刮起的风&#xff0c;如今正吹向低速无人驾驶赛道。近期不完全统计显示&#xff0c;当前A股及港股正在排队IPO的自动驾驶相关企业共有12家&#xff0c;其中实现盈利的企业仅两家&#xff0c;而且实现盈利的两家企业最主要的收入并不完全源于自动驾驶领域。 相比之下&am…...

谷歌推出基于AI的产品图像生成工具;[微软免费课程:12堂课入门生成式AI

&#x1f989; AI新闻 &#x1f680; 谷歌推出基于AI的产品图像生成工具&#xff0c;帮助商家提升广告创意能力 摘要&#xff1a;谷歌推出了一套基于AI的产品图像生成工具&#xff0c;使商家能够利用该工具免费创建新的产品图像。该工具可以帮助商家进行简单任务&#xff08;…...

python学习10

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…...

【JAVA学习笔记】59 - JUnit框架使用、本章作业

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter15/src/com/yinhai/homework JUnit测试框架 1.基本介绍 1. JUnit是一个Java语言的单元测试框架 2.多数Java的开发环境都已经集成了JUnit作为单元测试的工具 2.如何使用 创建方法后&#x…...

3D 线激光相机的激光条纹中心提取方法

论文地址:Excellent-Paper-For-Daily-Reading/application/centerline at main 类别:应用——中心线 时间:2023/11/06 摘要 线激光条纹中心提取是实现线激光相机三维扫描的关键,根据激光三角测量法研制了线激光相机,基于传统 Steger 法对其进行优化并提出一种适用于提…...

云尘靶场-Tr0ll-vulhub

直接fscan扫描 发现这里有一个ftp 我们等等看 首先去nmap扫描端口 nmap -A -p- 172.25.0.13 --unprivileged 这里使用wsl ftp ssh 和80 然后我们继续继续目录扫描 dirb 出来没什么用处 所以我们继续去看 流量包 流量包分析 首先看tcp ->分析->追踪流 这里是f…...

Cuda cmake支持C++17

项目中cuda的编译需要使用到C17的特性&#xff0c;但是自己在设置C17的时候&#xff0c;一直不生效&#xff0c;最后找到一种生效的方式 1. 设置CMAKE_CUDA_STANDARD cmake_minimum_required(VERSION 3.19)project(demo)set(CMAKE_CXX_STANDARD 17) set(CMAKE_CUDA_STANDARD …...

【黑马程序员】Git

文章目录 前言一、Git 概念二、Git 安装与常用命令三、Git 远程仓库四、在 IDEA 上操作 Git总结 前言 一、Git 概念 二、Git 安装与常用命令 三、Git 远程仓库 四、在 IDEA 上操作 Git 总结...

季节性壁炉布置:让您的家温馨如冬季仙境

1、主题化的壁炉装饰&#xff1a;根据不同节令或假日&#xff0c;您可以为壁炉布置不同的主题。比如&#xff0c;在圣诞季节&#xff0c;您可以放置圣诞装饰品&#xff0c;烛台和彩灯&#xff0c;打造温馨的圣诞壁炉。在万圣节&#xff0c;尝试用各种吓人的装饰&#xff0c;如假…...

Chisel-xcode 下的调试神器

LLDB 是一个有着 REPL 的特性和 C ,Python 插件的开源调试器。LLDB 绑定在 Xcode 内部&#xff0c;存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它&#xff0c;你可以查看变量的值&#xff0c;执行自定的指令&#xff0c;并且按照你所认为合适的步骤来操作…...

C语言运算符优先级一览表

优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式) 函数名(形参表) . 成员选择&#xff08;对象&#xff09; 对象.成员名 -> 成员选择&#xff08;指针&#xff09; 对象指针->成…...

C#在.NET Windows窗体应用中使用LINQtoSQL

目录 一、新建Windows窗体应用并添加LINQtoSQL类 二、错误信息CS0234 三、添加扩展包让Windows窗体应用支持LINQtoSQL类 默认安装的背景下&#xff0c;新建的Windows窗体应用是不支持LINQtoSQL类的。现象是资源管理器里的依赖项中默认的安装不能自动生成支持system.data.lin…...

Unity json反序列化为 字典存储

当在Unity游戏中需要加载和管理游戏数据&#xff0c;通常使用JSON文件是一种常见的方法。在本篇博客中&#xff0c;我们将深入探讨如何使用C#和Unity的JSON反序列化功能来实现这一目标。我们可以使用Unity的JsonUtility来反序列化JSON数据并将其映射到自定义的C#数据结构中。 …...

助力青少年学习,亚马逊云科技2024年全球人工智能和机器学习奖学金计划正式启动

云未来将以何种方式发展&#xff1f;方向握在意气风发的少年们手中。近日&#xff0c;亚马逊云科技全球人工智能和机器学习&#xff08;AI和ML&#xff09;奖学金计划在中国区的首次颁奖以及2024年启动仪式在北京中学正式举行&#xff0c;有45名学子凭借杰出的学业成绩、对人工…...

华为机试练习题:HJ13 句子逆序

1、完整题目 HJ13 句子逆序 描述 将一个英文语句以单词为单位逆序排放。例如“I am a boy”&#xff0c;逆序排放后为“boy a am I” 所有单词之间用一个空格隔开&#xff0c;语句中除了英文字母外&#xff0c;不再包含其他字符 数据范围&#xff1a;输入的字符串长度满足…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

【实施指南】Android客户端HTTPS双向认证实施指南

&#x1f510; 一、所需准备材料 证书文件&#xff08;6类核心文件&#xff09; 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...

起重机起升机构的安全装置有哪些?

起重机起升机构的安全装置是保障吊装作业安全的关键部件&#xff0c;主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理&#xff1a; 一、超载保护装置&#xff08;核心安全装置&#xff09; 1. 起重量限制器 功能&#xff1a;实时监测起升载荷&a…...