springboot entity层 mapper层 service层 controller层

一、entity层 (model层 ,domain层,实体层)

别名: model层 ,domain层
用途: 实体层,用于存放我们的实体类,与数据库中的属性值基本保持一致,实现set和get的方法。
例子:user表的实体User

public class User {
	/**
	 * 用户id
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;
	/**
	 * 用户昵称
	 */
	private String nick;
	/**
	 * 手机号
	 */
	private String mobile;
	/**
	 * 头像地址
	 */
	@Column(name = "head_image_url")
	private String headImageUrl;

	/**
	 * 获取用户id
	 * @return id - 用户id
	 */
	public Long getId() {
		return id;
	}

	/**
	 * 设置用户id
	 * @param id 用户id
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * 获取用户昵称
	 * @return nick - 用户昵称
	 */
	public String getNick() {
		return nick;
	}

	/**
	 * 设置用户昵称
	 * @param nick 用户昵称
	 */
	public void setNick(String nick) {
		this.nick = nick;
	}

	/**
	 * 获取手机号
	 * @return mobile - 手机号
	 */
	public String getMobile() {
		return mobile;
	}

	/**
	 * 设置手机号
	 * @param mobile 手机号
	 */
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}

	/**
	 * 获取头像地址
	 * @return head_image_url - 头像地址
	 */

	public String getHeadImageUrl() {
		return headImageUrl;
	}

	/**
	 * 设置头像地址
	 * @param headImageUrl 头像地址
	 */
	public void setHeadImageUrl(String headImageUrl) {
		this.headImageUrl = headImageUrl;
	}
}

二、mapper层(dao层,对数据库进行数据持久化操作)

别名: dao层
用途: 对数据库进行数据持久化操作,他的方法语句是直接针对数据库操作的,主要实现一些增删改查操作,在mybatis中方法主要与与xxx.xml内相互一一映射。

示例:userMapper

public interface userMapper {
	int deleteByPrimaryKey(Long id);
	int insert(user record);
	int insertSelective(user record);
	user selectByPrimaryKey(Long id);
	int updateByPrimaryKeySelective(user record);
	int updateByPrimaryKey(user record);
}

三、service层 (业务service层)

用途:业务service层,给controller层的类提供接口进行调用。一般就是自己写的方法封装起来,就是声明一下,具体实现在serviceImpl中。
示例:UserService

public interface UserService extends Service {

}

四、controller层 (web 层,控制层,)

别名:web 层
用途: 控制层,负责具体模块的业务流程控制,需要调用service逻辑设计层的接口来控制业务流程。因为service中的方法是我们使用到的,controller通过接收前端H5或者App传过来的参数进行业务操作,再将处理结果返回到前端。

在这里插入图片描述

示例:UserController

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

	@Resource
	private UserService userService;

	@PostMapping("/add")
	public Result add(User user) {
		userService.save(user);
		return ResultGenerator.genSuccessResult();
	}

	@PostMapping("/delete")
	public Result delete(@RequestParam Integer id) {
		userService.deleteById(id);
		return ResultGenerator.genSuccessResult();
	}

	@PostMapping("/update")
	public Result update(User user) {
		userService.update(user);
		return ResultGenerator.genSuccessResult();
	}
	
	@PostMapping("/detail")
	public Result detail(@RequestParam Integer id) {
		User user = userService.findById(id);
		return ResultGenerator.genSuccessResult(user);
	}

	@PostMapping("/list")
	public Result list(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "0") Integer size) {
		PageHelper.startPage(page, size);
		List list = userService.findAll();
		PageInfo pageInfo = new PageInfo(list);
		return ResultGenerator.genSuccessResult(pageInfo);
	}
}

springboot 配置文件类型

1、application.properties

server.port = 8001

2、application.yml

server:
	port: 8002

3、application.yaml

server:
	port: 8003

加载顺序为

properties > yml > yaml
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

### Spring Boot之间的交互与关联 #### 1. **Controller ** `Controller` 作为应用的入口,主要负责接收 HTTP 请求并调用 `Service` 完成具体的业务逻辑处理。它通过注解如 `@RestController` 或 `@Controller` 来标记,并利用 `@RequestMapping`, `@GetMapping`, `@PostMapping` 等注解定义接口路径和请求方式。 当接收到外部请求时,`Controller` 将参数传递给 `Service` 进行进一步处理[^1]。完成后,再将结果返回给客户端。 ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public ResponseEntity<User> getUserById(@PathVariable("id") Long id) { return new ResponseEntity<>(userService.getUserById(id), HttpStatus.OK); } } ``` --- #### 2. **Service ** `Service` 是核心业务逻辑所在的地方,主要用于实现复杂的业务功能。该会调用 `DAO/Mapper` 执行数据库操作,并可能涉及多个 DAO 的协作。 此外,`Service` 还承担事务管理的任务,确保数据的一致性和完整性。通常使用 `@Transactional` 注解来声明事务边界。 ```java @Service @Transactional public class UserService { @Autowired private UserDao userDao; public User getUserById(Long id) { return userDao.findById(id).orElse(null); // 调用 DAO 获取用户信息 } public void saveUser(User user) { userDao.save(user); // 调用 DAO 存储用户信息 } } ``` --- #### 3. **DAO/Repository (Mapper) ** `DAO`(Data Access Object)或 `Mapper` 是用于访问数据库的操作。这一实现了对数据库的具体 CRUD 操作,通常是基于 ORM 工具(如 Hibernate、JPA 或 MyBatis)。在 Spring Boot 中,可以通过 `@Repository` 注解标注此类组件[^1]。 对于 MyBatis 用户来说,还可以直接编写 XML 映射文件或者使用注解形式定义 SQL 查询语句。 ```java @Repository public interface UserDao extends JpaRepository<User, Long> { Optional<User> findById(Long id); List<User> findByName(String name); } ``` --- #### 4. **Configuration 配置** `Configuration` 的作用是对整个应用程序的行为进行全局设置。它可以用来加载属性文件、注册 Bean 定义以及初始化第三方库等功能[^1]。 例如,在 Shiro 认证框架集成过程中,需要配置安全策略: ```java @Configuration public class SecurityConfig { @Bean public Realm myRealm() { return new MyCustomRealm(); // 自定义领域对象 } } ``` --- #### 5. **Utils 工具类** 虽然不属于标准分的一部分,但工具类往往被广泛应用于各个模块间共享通用函数。比如日期转换器、字符串处理器等都可以集中放置在此处以便重复利用[^1]。 --- #### 总结:各间的通信流程 - 当前端发起请求到达服务器端口后,首先进入的是 `Controller` 控制器; - 接着由控制器委托给对应的 `Service` 方法去履行实际职责; - 如果涉及到持久化存储,则继续向下流转至 `DAO/Mapper` 执行相应命令; - 整个过程结束后沿原路逐级回传最终反馈消息直至呈现于界面上供使用者查看。 --- 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值