SSM项目结构简述
本文最后更新于63 天前,如有错误请发送邮件到3270403724@qq.com,欢迎大家纠错

概述

SSM(即Spring+SpringMVC+MyBatis)项目整体可以分为前端和后端两部分,前端主要负责与用户交互,后端则处理业务逻辑和数据持久化。在后端部分,SSM框架进一步将功能划分为四个主要层次:持久层(dao层)、业务层(service层)、控制层(controller层)和视图层(view层)。

持久层

持久层,又称数据访问层(DAO层,Mapper层),持久层主要负责与数据库进行交互,封装数据访问的细节,如增删改查(CRUD),使得业务层无需直接操作数据库。通常先设计接口,然后在Spring的配置文件中定义接口的实现类。数据源的配置以及数据库连接的参数也在Spring的配置文件中进行配置。

配置eg

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
//指定了数据库驱动的全类名,这里使用的是MySQL的驱动。
spring.datasource.url=jdbc:mysql://localhost:3306/tlias
//定义了数据库的JDBC URL,包括数据库服务器地址(localhost),端口号(3306),以及数据库名称(tlias)。
spring.datasource.username=root
//数据库的用户名
spring.datasource.password=123456
//对应用户名的密码

代码eg

public interface UserDAO {
    User findById(int id);
    List<User> findAll();
    void save(User user);
    void update(User user);
    void delete(int id);
}

@Mapper 是一个 MyBatis 框架中的注解,它用于标记一个接口为 MyBatis 的 Mapper 接口。Mapper 接口是 MyBatis 用来定义数据访问操作(如增删改查)的接口,它允许你通过简单的接口方法调用,而不是编写复杂的 SQL 语句或 JDBC 代码,来与数据库进行交互。

当一个接口上使用 @Mapper 注解时,MyBatis 会在启动时自动扫描这些接口,并创建它们的实现类

对应的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">
<mapper namespace="top.heimarlife.comment.dao.UserDAO">

<resultMap id="userResultMap" type="com.youkeda.comment.dataobject.UserDO">
        <!-- 结果映射 -->
    <id column="id" property="id"/>//主键
    <result column="数据库字段" property="DAO类成员"/>
</resultMap>

    <!-- 实现方法 -->
 
</mapper>

通用部分解析

1.XML声明和DOCTYPE,用于指定XML的版本、编码方式和DTD(文档类型定义),以确保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">

2.Mapper命名空间,通常与对应的Mapper接口的全限定名一致。

<mapper namespace="Mapper接口类路径">
</mapper>

3.ResultMap,用于定义如何将数据库中的列映射到Java对象的属性上。

<resultMap id="userResultMap" type="映射数据库的DO对象">
    <!-- 结果映射 -->
    <result column="数据库字段" property="DO对象成员"/>
</resultMap>

业务层

业务层(Service层),又称服务层,主要负责处理应用程序中的业务逻辑。它接收来自控制层的请求,调用持久层来访问数据库,并根据业务规则处理数据,然后将处理结果返回给控制层。

public class UserService {
//一般要先创建接口,再实现
    private UserDAO userDAO;

    public UserService(UserDAO userDAO) {
        this.userDAO = userDAO;
    }

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

    public List<User> getAllUsers() {
        return userDAO.findAll();
    }

    public void createUser(User user) {
        userDAO.save(user);
    }
    
    // 其他业务逻辑方法...
}

控制层可以直接调用持久层的方法。然而,这种直接调用的方式并不符合最佳的软件设计,所以一般要有服务层,服务层封装持久层的方法并可以进行简单处理。

控制层

控制层(Controller层)主要负责接收用户的请求,调用业务层来处理请求,并将处理结果返回给用户。它通常与前端视图层进行交互,将业务数据传递给视图层进行展示,或接收视图层传递的用户输入。

@RestController
@RequestMapping("/users")
public class UserController {
    private UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }
    //......
    // HTTP请求处理方法...
}

视图层

视图层(View层)主要负责展示应用程序的用户界面,接收用户的输入,并将业务数据呈现给用户。它通常使用HTML、CSS、JavaScript等前端技术来构建用户界面。

未完待续
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇