SSM框架详解:结构创建与注解应用

news2024/9/24 22:48:46

Alt

文章目录

    • 1. 引言
    • 2. SSM框架项目结构创建
      • 2.1 目录结构
      • 2.2 说明
    • 3. 注解的应用
      • 3.1 `@Controller`
      • 3.2 `@Service`
      • 3.3 `@Repository`
      • 3.4 `@Autowired`
      • 3.5 `@RequestMapping`
      • 3.6 `@Select`、`@Insert`等
    • 4. 结语

🎈个人主页:程序员 小侯
🎐CSDN新晋作者
🎉欢迎 👍点赞✍评论⭐收藏
✨收录专栏:Java框架
✨文章内容:创建与注解
🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗

1. 引言

SSM框架(Spring + SpringMVC + MyBatis)是一种广泛应用于JavaWeb开发的技术栈。其中,Spring负责管理应用程序的对象(IoC),SpringMVC负责处理用户请求和返回响应,MyBatis用于简化数据库操作。在SSM框架中,结构创建和注解的应用是关键的开发实践,本文将深入探讨这两个方面。
在这里插入图片描述

2. SSM框架项目结构创建

2.1 目录结构

一个良好的项目结构有助于提高代码的可维护性和可扩展性。下面是一个典型的SSM框架项目结构:

|-- src
|   |-- main
|   |   |-- java
|   |   |   |-- com
|   |   |   |   |-- example
|   |   |   |   |   |-- controller  // 控制层
|   |   |   |   |   |-- dao         // 数据访问层
|   |   |   |   |   |-- service     // 业务逻辑层
|   |   |   |   |   |-- entity      // 实体类
|   |   |-- resources
|   |   |   |-- mybatis             // MyBatis映射文件
|   |   |   |-- spring              // Spring配置文件
|   |   |   |-- springmvc           // SpringMVC配置文件
|   |-- webapp
|   |   |-- WEB-INF
|   |   |   |-- views               // 视图层
|   |   |   |-- web.xml             // Web配置文件
|-- pom.xml                        // Maven配置文件

在这里插入图片描述

2.2 说明

  • controller:控制层,接收用户请求并调用业务逻辑层处理。
@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/getUserById")
    public String getUserById(Model model, @RequestParam("id") int id) {
        User user = userService.getUserById(id);
        model.addAttribute("user", user);
        return "userDetail";
    }
    // 其他请求处理方法
}
  • dao:数据访问层,与数据库交互,执行SQL语句。
@Mapper
public interface UserMapper {

    @Select("SELECT * FROM user WHERE id = #{id}")
    User getUserById(@Param("id") int id);

    @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
    void addUser(User user);
    // 其他SQL语句映射方法
}
  • service:业务逻辑层,处理业务逻辑,调用数据访问层。
@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public User getUserById(int id) {
        return userMapper.getUserById(id);
    }

    public void addUser(User user) {
        userMapper.addUser(user);
    }
    // 其他业务逻辑方法
}
  • entity:实体类,与数据库表一一对应,用于封装数据。
public class User {

    private int id;
    private String name;
    private int age;

    // 省略getter和setter
}
  • mybatis:存放MyBatis的映射文件,配置SQL语句和实体类的映射关系。
<!-- UserMapper.xml -->
<mapper namespace="com.example.dao.UserMapper">

    <select id="getUserById" resultType="com.example.entity.User">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <insert id="addUser" parameterType="com.example.entity.User">
        INSERT INTO user(name, age) VALUES(#{name}, #{age})
    </insert>

    <!-- 其他SQL语句映射 -->
</mapper>
  • spring:Spring框架的配置文件,包括数据源配置、事务管理等。
<!-- applicationContext.xml -->
<context:component-scan base-package="com.example" />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <!-- 数据源配置 -->
</bean>
<!-- 其他Spring配置 -->
  • springmvc:SpringMVC框架的配置文件,包括视图解析器、拦截器等。
<!-- springmvc-servlet.xml -->
<context:component-scan base-package="com.example" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!-- 视图解析器配置 -->
</bean>
<!-- 其他Spring

MVC配置 -->

3. 注解的应用

SSM框架广泛使用注解简化配置,提高开发效率。以下是一些常用注解的应用:

3.1 @Controller

用于标识一个类为SpringMVC的Controller,负责处理用户请求。

@Controller
@RequestMapping("/user")
public class UserController {
    // 请求处理方法
}

3.2 @Service

用于标识一个类为Spring的服务层组件,通常用于定义业务逻辑。

@Service
public class UserService {
    // 业务逻辑方法
}

3.3 @Repository

用于标识一个类为Spring的数据访问层组件,通常用于与数据库交互。

@Repository
public interface UserMapper {
    // 数据访问方法
}

3.4 @Autowired

用于自动装配Spring容器中的bean。

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;
    // ...
}

3.5 @RequestMapping

用于映射请求路径,指定处理请求的方法。

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping("/getUserById")
    public String getUserById(Model model, @RequestParam("id") int id) {
        // 处理请求的方法
    }
    // ...
}

3.6 @Select@Insert

用于映射MyBatis的SQL语句,与XML配置文件相对应。

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM user WHERE id = #{id}")
    User getUserById(@Param("id") int id);

    @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
    void addUser(User user);
    // ...
}

4. 结语

通过良好的项目结构和注解的应用,SSM框架能够更好地发挥其优势,简化配置,提高开发效率。在实际项目中,可以根据具体需求进一步优化项目结构和灵活使用注解,以更好地满足业务需求。希望本文对于理解SSM框架的项目结构和注解的应用有所帮助。

后记 👉👉💕💕美好的一天,到此结束,下次继续努力!欲知后续,请看下回分解,写作不易,感谢大家的支持!! 🌹🌹🌹

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

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

相关文章

传统家装“死气沉沉”?VR智慧家装提供VR可视化方案

传统家装市场虽然处于成熟期&#xff0c;但是对于装修小白的户主来说&#xff0c;难以解决的痛点依旧还有很多。很多家装公司所谓的设计师&#xff0c;不一定全都具备设计知识&#xff0c;也不懂得从客户的需求出发&#xff0c;多重因素导致家装行业“死气沉沉”。 为了打破装修…

振南技术干货集:各大平台串口调试软件大赏(4)

注解目录 &#xff08;串口的重要性不言而喻。为什么很多平台把串口称为 tty&#xff0c;比如 Linux、MacOS 等等&#xff0c;振南告诉你。&#xff09; 1、各平台上的串口调试软件 1.1Windows 1.1.1 STCISP &#xff08;感谢 STC 姚老板设计出 STCISP 这个软件。&#xf…

如何熟练使用vim工具?

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f…

宠物店管理系统服务预约会员小程序效果如何

很多人都会养宠物&#xff0c;随着生活品质提升&#xff0c;尤其以年轻人为主的消费者在宠物食品、医疗、购买消费等方面有较高的消费属性&#xff0c;而在线下也有大量从业者&#xff0c;互联网程度及智慧化门店提升及客户赋能&#xff0c;线下经营的同时还需要线上发展拓客引…

C/C++ 实现FTP文件上传下载

FTP&#xff08;文件传输协议&#xff09;是一种用于在网络上传输文件的标准协议。它属于因特网标准化的协议族之一&#xff0c;为文件的上传、下载和文件管理提供了一种标准化的方法&#xff0c;在Windows系统中操作FTP上传下载可以使用WinINet库&#xff0c;WinINet&#xff…

设计模式-创建型模式之工厂设计模式

文章目录 五、工厂方法六、抽象工厂 五、工厂方法 工厂方法&#xff0c;使用工厂可以像使用人员屏蔽对象创建的细节&#xff0c;使用者无需指定具体的类即可使用功能&#xff0c;达到信息隐蔽的作用&#xff0c;便于后期的维护&#xff0c;修改和扩展。 在看工厂方法前还有一…

低代码究竟有何特别之处?为什么很多企业倾向于用低代码开发软件?

目录 一、低代码是什么 二、低代码有哪些核心能力&#xff1f; 三、低代码能做哪些事情&#xff1f; 1、软件开发快效率高 2、满足企业的多样化需求 3、轻松与异构系统集成 4、软件维护成本低 5、为企业实现降本增效 四、结语 低代码平台正高速发展中&#xff0c;越来越多的企业…

Windows10找不到hosts文件的解决办法

正常情况下hosts文件在目录C:\Windows\System32\drivers\etc中&#xff0c;最近新装的Windows10系统发现该目录下没有hosts文件。 如下操作显示隐藏文件发现还是没有。 执行如下命令hosts文件出现&#xff1a; for /f %P in (dir %windir%\WinSxS\hosts /b /s) do copy %P …

时间序列异常检测14篇顶会论文合集,附必备工具和数据集

今天来聊聊一个在量化交易、网络安全检测、自动驾驶汽车和大型工业设备的日常维护等领域都有重要作用的研究主题&#xff1a;时间序列异常检测。 时间序列异常检测是一种在时间序列数据中识别和标识与预期模式、趋势或行为不符的异常点或事件的技术。鉴于它如此广泛的应用范围…

HP1010 | 业界首款图腾柱 PFC 专用数字控制器震撼来袭!

随着节能标准和客户需求的不断提高&#xff0c;电源解决方案的效率和尺寸也在不断优化&#xff0c;设计紧凑高效的 PFC 电源是一个复杂的开发挑战。随着第三代半导体器件氮化镓和碳化硅的大范围应用&#xff0c;图腾柱无桥 PFC&#xff08;TPPFC&#xff09;应用获得极大的拓展…

IDEA解决Git冲突详解

目录 前言&#xff1a; 何为冲突 冲突演示 IDEA冲突解决 小结&#xff1a; 前言&#xff1a; 相信大家多多少少都有了解和使用过Git&#xff0c;作为Java程序员idea可谓是无敌的存在了&#xff0c;那么如何使用idea解决Git冲突呢&#xff1f;不瞒大家前段时间在公司把同事…

Java arthas分析接口性能

一、环境准备 1、arthas文档&#xff1a; 简介 | arthas 2、下载arthas-boot.jar https://arthas.aliyun.com/arthas-boot.jar 二、启动arthas java -jar arthas-boot.jar 输入对应pid&#xff0c;进入对应服务 三、排查 1、执行命令&#xff1a; trac 类路径 方法名 tr…

编写算法,对n个关键字取整数值的记录序列进行整理。以使所有关键字为负值的记录排在关键字为非负值的记录之前

编写算法&#xff0c;对n个关键字取整数值的记录序列进行整理。以使所有关键字为负值的记录排在关键字为非负值的记录之前&#xff0c;要求&#xff1a; &#xff08;1&#xff09;采用顺序存储结构&#xff0c;至少使用一个记录的辅助存储空间 &#xff08;2&#xff09;算法的…

大数据HCIE成神之路之数学(4)——最优化实验

最优化实验 1.1 最小二乘法实现1.1.1 算法介绍1.1.2 代码实现1.2 梯度下降法实现1.2.1 算法介绍1.2.2 代码实现1.3 拉格朗日乘子法1.3.1 实验1.3.2 实验操作步骤1.1 最小二乘法实现 1.1.1 算法介绍 最小二乘法(Least Square Method),做为分类回归算法的基础,有着悠久的历…

智能配电箱监控系统

智能配电箱监控系统是一种用于实时监控配电箱运行状态和电能质量的系统。它通过集成应用物联网技术&#xff0c;实现对配电箱的数据采集、整合和处理&#xff0c;从而让工作人员能够远程了解和掌握配电箱的情况。通过电力设备的数字化&#xff0c;依托电易云-智慧电力物联网&am…

JVM 字节码

JVM概述 问题引出 你是否也遇到过这些问题&#xff1f; 运行着的线上系统突然卡死&#xff0c;系统无法访问&#xff0c;甚至直接OOM&#xff01;想解决线上JVM GC问题&#xff0c;但却无从下手。新项目上线&#xff0c;对各种JVM参数设置一脸茫然&#xff0c;直接默认吧&…

Redis安装和部署详细流程

文章目录 一、Windows环境下安装 Redis1.1 下载Redis1.2 启动redis服务器1.3 启动redis客户端1.4 配置环境变量 参考资料 一、Windows环境下安装 Redis windows系统环境下&#xff0c;redis安装方式主要有&#xff1a; zip压缩包方式 https://redis.io/download 或者 https:/…

智慧机场视频监控系统方案:AI智能助力机场智慧运营

一、方案背景 随着人们生活物质水平的上升&#xff0c;人们对机场的需求也日益增多&#xff0c;在民航新建、迁建、扩建机场项目猛增的同时&#xff0c;也需同步配备相应的安防监控系统&#xff0c;以满足民航机场安全管理要求和机场运营业务的高速发展。 二、方案概述 智慧机…

主机的容器化技术介绍

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、什么是容器 容器是一个标准化的单元&#xff0c;是一种轻量级、可移植的软件打包技术&#xff0c;容器将软件代码及其相关依赖打包&#xff0c;使应用程序可以在任何计算介质运行。例如开发人员在自己的…

Sui受邀参加Builder DAO举办的LeadUp The Night活动,畅谈Sui与Move语言

LeadUp the Night是一个定期举办的MeetUp活动&#xff0c;由Builder DAO邀请区块链各方项目开发者、VC担任本活动的讲师。这个活动旨在促进区块链技术的发展和应用&#xff0c;让参与者有机会开发创新的区块链应用&#xff0c;探索区块链技术的潜力。 ​​11月30日受BuilderDA…