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

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 {@Autowiredprivate 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 {@Autowiredprivate 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>
<!-- 其他SpringMVC配置 -->

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 {@Autowiredprivate 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.hqwc.cn/news/234571.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SS8847T 双通道 H 桥驱动芯片 替代DRV8847

SS8847E是一款双桥电机驱动器&#xff0c;具有两个H桥驱动器&#xff0c;可以驱动两个直流有刷电机&#xff0c;一个双极步进电机&#xff0c;螺线管或其他感性负载。该器件的工作电压范围为 2.7V 至 15V&#xff0c;每通道可提供高达 1.0A 的负载电流。每个H桥的输出驱动器模块…

在gitlab上使用server_hooks

文章目录 1. 前置条件2. Git Hook2.1 Git Hook 分为两部分&#xff1a;本地和远程2.1.1 本地 Git Hook&#xff0c;由提交和合并等操作触发&#xff1a;2.1.2 远程 Git Hook&#xff0c;运行在网络操作上&#xff0c;例如接收推送的提交&#xff1a; 3. 操作步骤3.1 对所有的仓…

改进YOLO5:结合CVPR2023最新 PConv |包含 YOLOv5 / YOLOv8 模型 YAML 文件

改进YOLO5:结合CVPR2023最新 PConv |包含 YOLOv5 / YOLOv8 模型 YAML 文件 一、论文总结PConv模块优势二、YOLOv51. yaml文件2. common代码文件三、YOLOv81. yaml2. modules文件添加3. Task文件4. 测试论文链接🎁 :https://arxiv.org/pdf/2303.0366

交叉熵损失函数(Cross-Entropy Loss Function)

交叉熵损失函数&#xff08;Cross-Entropy Loss Function&#xff09; 在处理机器学习或深度学习问题时&#xff0c;损失/成本函数用于在训练期间优化模型。目标几乎总是最小化损失函数。损失越低&#xff0c;模型越好。交叉熵损失是最重要的成本函数。它用于优化分类模型。对…

Wish防关联是什么?Wish要怎样避免违规封店?

四大跨境电商平台之一wish&#xff0c;做跨境电商的很多人可能都听过wish。随着wish不断完善平台制度&#xff0c;对于多账号运营的卖家要求越来越严厉&#xff0c;wish和亚马逊、eBay等其它跨境电商平台一样&#xff0c;不支持一个卖家开设多个账号多家店铺。 但是对于各位卖家…

【力扣:526】优美的排列

状态压缩动态规划 原理如下&#xff1a; 遍历位图可以得到所有组合序列&#xff0c;将这些序列的每一位看作一个数&#xff0c;取序列中1总量的值作为每轮遍历的位&#xff0c;此时对每个这样的位都能和所有数进行匹配&#xff0c;因为一开始就取的是全排列&#xff0c;并且我们…

LeetCode(46)汇总区间【区间】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 汇总区间 1.题目 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属于某…

多多跨境跑出高质量发展“加速度”,解锁拼多多Q3财报背后的王牌

互联网红利渐趋消退&#xff0c;用户拉新难度加大&#xff0c;这些现象也在表明过去电子商务依靠资本、流量快速增长的发展模式已经成为过去式。由高速发展转为高质量发展&#xff0c;在今天每一个经济体与宏观经济发展态势一般&#xff0c;发展的“质量”价值正在被放大开来。…

基于安卓的2048益智游戏的设计与实现

基于安卓的2048益智类游戏的设计与实现 摘要&#xff1a;现如今随着社会日新月异&#xff0c;人们越来越离不开智能手机所提供的灵活性与便携性。安卓系统是在这股手机发展迅猛的潮流中其市场占有率过半的手机平台&#xff0c;基于安卓系统的游戏开发有着不可估量的前景。 本论…

c++ 中名空间中using 引入的细节

如果在引入名空间中的特定成员函数的时候&#xff0c; 全局不能定义同名的函数&#xff0c;但是其实只要参数不同就行 namespace a{int x 1;int fun(){return 0;} }using namespace a; using a::fun;void fun(int x) {} int x 10; int main() {fun(10); } 上面就是一个正确…

源码安装mysql

使用源码安装mysql&#xff0c;这里选择的版本是mysql5.7.35 ,系统是Centos7.6 官网下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 下载源码压缩包 [rootlocalhost ~]# cd /opt[rootlocalhost opt]# wget https://downloads.mysql.com/archives/get/…

MatchPyramid实现文本匹配

引言 今天利用MatchPyramid实现文本匹配。 原论文解析→点此←。 MatchPyramid 核心思想是计算两段文本间的匹配矩阵&#xff0c;把它当成一个图形利用多层卷积网络提取不同层级的交互模式。 匹配矩阵是通过计算两段输入文本基本单元(比如字或词)之间相似度得到的&#xf…