SpringBoot项目中controller层、service层、mapper层、entity层、dto层、vo层理解
时间: 2023-07-03 19:33:26 浏览: 298
在SpringBoot项目中,通常会使用以下几层来组织代码:
1. Controller层:负责接收请求、处理业务逻辑并返回响应结果。通常被称为Web层。
2. Service层:负责处理业务逻辑,通常被称为业务逻辑层。Service层通常被Controller层调用。
3. Mapper层:负责与数据库交互,通常被称为数据访问层。Mapper层通常被Service层调用。
4. Entity层:通常用于定义与数据库对应的实体类,也称为领域模型类。
5. DTO层:通常用于在不同层之间传递数据,DTO是Data Transfer Object的缩写。
6. VO层:通常用于在前端展示数据时封装数据,VO是View Object的缩写。
以上这些层次可以帮助开发者更好地组织代码,方便开发和维护。
相关问题
编写 mybatis-plus3.5.1.1版本 controller、service、impl、mapper、entity、dto、vo模板
以下是 mybatis-plus 3.5.1.1 版本的模板代码:
Controller 模板:
```java
@RestController
@RequestMapping("/${table_name}")
public class ${table_nameUpper}Controller {
@Autowired
private ${table_nameUpper}Service ${table_name};
@GetMapping("/{id}")
public ${table_nameUpper}VO getById(@PathVariable("id") Long id) {
${table_nameUpper} entity = ${table_name}.getById(id);
return BeanUtil.copyProperties(entity, ${table_nameUpper}VO.class);
}
@PostMapping
public boolean save(@RequestBody ${table_nameUpper}DTO dto) {
${table_nameUpper} entity = BeanUtil.copyProperties(dto, ${table_nameUpper}.class);
return ${table_name}.save(entity);
}
@PutMapping
public boolean update(@RequestBody ${table_nameUpper}DTO dto) {
${table_nameUpper} entity = BeanUtil.copyProperties(dto, ${table_nameUpper}.class);
return ${table_name}.updateById(entity);
}
@DeleteMapping("/{id}")
public boolean delete(@PathVariable("id") Long id) {
return ${table_name}.removeById(id);
}
@GetMapping("/list")
public List<${table_nameUpper}VO> list() {
List<${table_nameUpper}> entityList = ${table_name}.list();
return BeanUtil.copyProperties(entityList, ${table_nameUpper}VO.class);
}
@GetMapping("/page")
public IPage<${table_nameUpper}VO> page(Page<${table_nameUpper}> page) {
IPage<${table_nameUpper}> entityPage = ${table_name}.page(page);
return entityPage.convert(entity -> BeanUtil.copyProperties(entity, ${table_nameUpper}VO.class));
}
}
```
Service 模板:
```java
public interface ${table_nameUpper}Service extends IService<${table_nameUpper}> {
}
```
ServiceImpl 模板:
```java
@Service
public class ${table_nameUpper}ServiceImpl extends ServiceImpl<${table_nameUpper}Mapper, ${table_nameUpper}> implements ${table_nameUpper}Service {
}
```
Mapper 模板:
```java
public interface ${table_nameUpper}Mapper extends BaseMapper<${table_nameUpper}> {
}
```
Entity 模板:
```java
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class ${table_nameUpper} implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
#foreach($column in $columns)
@TableField("${column.column_name}")
private ${column.java_type} ${column.column_name};
#end
}
```
DTO 模板:
```java
@Data
public class ${table_nameUpper}DTO {
#foreach($column in $columns)
private ${column.java_type} ${column.column_name};
#end
}
```
VO 模板:
```java
@Data
public class ${table_nameUpper}VO {
private Long id;
#foreach($column in $columns)
private ${column.java_type} ${column.column_name};
#end
}
```
其中,$table_name 表示表名,$table_nameUpper 表示表名的首字母大写形式,$columns 表示表的所有列信息。需要在模板中使用 Velocity 模板引擎进行解析。
GIT版本 版本库(仓库) 工作区 暂存区 分支区 GIT远程版本控制:在IDEA中推送本地仓库代码到远程仓库——HTTPS方式 项目开发规范 单体系统:小型项目,所有功能都在一个系统当中,可以根据业务划分模块 xxx-api:用于让其他项目进行引入的依赖,通常是一些入参bo和出参vo的实体类、外部调用的接口 。 xxx-core: 用于编写当前项目的主体业务,划分:controller、service、mapper、entity、配置类(springboot)、启动类、工具类等 数据库中每张表都创建一个与之对应的包,每个包中都包含业务的controller、service、mapper、entity bo:方法的入参;实体类都以bo结尾,或者放到此包下 vo:方法的出参——返回值 entity:严格按照一个字段一个属性对应表格与类的关系的实体类 dto:内部使用的实体类,尽量不要使用,将要从页面传递给服务器的数据格式对象 domain:具有一定业务意义的后端封装对象,通常是有关联关系的实体类,例如Dept和List<Employee> 另一结构:xxx-web、xxx-service、xxx-entity、xxx-mapper、xxx-utils、xxx-common
GIT是一个分布式版本控制系统,它用于记录和管理项目代码的变更历史。以下是GIT的一些关键概念:
1. 版本库(仓库):存储项目代码及其历史记录的地方。它包括本地版本库和远程版本库。
2. 工作区:项目代码在电脑上的实际目录。
3. 暂存区:用于暂存即将提交到版本库的文件变更。
4. 分支区:用于并行开发和管理不同的代码分支,可以在分支上进行独立的开发和测试。
5. GIT远程版本控制:通过将本地仓库代码推送到远程仓库来实现多人协作和备份。
在IDEA中推送本地仓库代码到远程仓库的方式有很多种,其中一种是使用HTTPS方式。具体步骤如下:
1. 在远程仓库中创建一个空仓库,获取仓库的HTTPS地址。
2. 在IDEA中打开项目,并确保项目已经初始化为GIT仓库。
3. 打开终端或GIT Bash,使用以下命令将本地仓库关联到远程仓库:
```
git remote add origin 远程仓库地址
```
4. 使用以下命令将本地分支推送到远程仓库:
```
git push -u origin 分支名
```
-u参数是为了建立本地分支与远程分支的关联,之后可以直接使用git push命令推送代码。
关于项目开发规范,你提到了一种常见的单体系统的结构划分方式。这种方式将功能模块划分为xxx-api、xxx-core等不同的包,每个包都有自己的职责和层级结构。这样可以提高代码的可维护性和可扩展性,使代码结构更清晰。
其中,xxx-api包主要用于定义外部调用的接口和数据传输对象(DTO)。xxx-core包则是项目的主体业务逻辑,包括controller、service、mapper、entity等组件。
此外,你还提到了一些其他常见的包结构,如xxx-web、xxx-service、xxx-entity等。这些结构可以根据具体项目的需求和规模进行调整和扩展。
总的来说,项目开发规范的目标是提高代码质量和可维护性,使团队成员能够快速理解和开发项目。具体的规范可以根据团队的需求和实际情况进行定制。
阅读全文