【平台开发】— 5.后端:代码分层
2021-04-23 17:54
696 查看
数据库准备完事儿,现在可以撸后端代码了。
现在想要探索前后端如何交互,得后端返回出数据才行,既然如此,那就先来撸一个返回用户信息。
然后就可以判断前端传来的用户名和密码是不是存在,存在的话就可以登录(PS:这里仅仅以学习目的,并不是说真正的登录是这么实现)。
首先,熟悉下后端代码的分层。
一、pojo
实体层,用来写实体类,比如用户
User,它有很多个属性,比如
id,
username等等,与上篇设计的数据库表字段对应。
注意
@Data这个注解,可以不用写
set()、
get()、
tostring()方法了,省去了不少功夫,而且代码也更简洁。
记得添加
依赖,和在idea里安装
lombok插件。
package com.mock.platform.pojo; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Data; import javax.persistence.*; import java.util.Date; @Entity @Table(name = "user") @JsonIgnoreProperties({"handler", "hibernateLazyInitializer"}) @Data public class User { @Id //声明一个字段“id”为数据库表的主键 @GeneratedValue(strategy = GenerationType.AUTO) //标注主键的生成策略,通过strategy 属性指定 @Column(name = "id") //被标注字段在数据库表中所对应字段的名称 private int id; //用户id private String username; //用户名称 private String password; //密码 private Date createTime; //创建时间 // public int getId() { // return id; // } // public void setId(int id) { // this.id = id; // } // public String getUsername() { // return username; // } // public void setUsername(String username) { // this.username = username;
二、dao
DAO层,全称Data Access Object,负责与数据库打交道。
这个包下面则是用来写dao文件,
UserDAO类继承
JpaRepository,就提供了CRUD和分页 的各种常见功能。
JpaRepository,参数分别是
实体类,和这个实体类
id的类型。
package com.mock.platform.dao; import com.mock.platform.pojo.User; import org.springframework.data.jpa.repository.JpaRepository; /** * UserDAO类继承JpaRepository,就提供了CRUD和分页 的各种常见功能。 * JpaRepository,参数分别是实体类,和这个实体类id的类型。 */ public interface UserDAO extends JpaRepository{ }
三、service
业务逻辑层,主要的业务逻辑就是在这里实现了,所以说基本业务需求都更改这个层。
比如我实现一个方法用来查询用户信息。
package com.mock.platform.service; import com.mock.platform.dao.UserDAO; import com.mock.platform.pojo.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import java.util.List; @Service //标记这是一个service类 public class UserService { @Autowired //自动装配UserDAO对象 UserDAO userDAO; public ListuserList() { // Sort 对象,表示通过 id 倒排序 Sort sort = Sort.by(Sort.Direction.DESC, "id"); // 通过 categoryDAO进行查询 return userDAO.findAll(sort); } }
四、controller
这层通常用来控制业务逻辑,但是具体的业务逻辑并不在这里实现,而是通过调用service层里的方法。
比如我这里就是接收到前端的请求后,返回用户信息。
package com.mock.platform.controller; import com.mock.platform.pojo.User; import com.mock.platform.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController //标记这是控制器,下面每个方法的返回值都会直接转换成json数据格式 public class UserController { @Autowired //自动装配 CategoryService UserService userService; @GetMapping("/users") //当访问users,会获取所有的User对象集合,并返回。RestController会自动转成json给浏览器 public ListuserList() throws Exception { return userService.userList(); } }
五、properties
上面基本把逻辑都写好了,现在还要在properties里配置好数据源,这样整个服务才可以使用。
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/my_platform?characterEncoding=UTF-8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.hibernate.ddl-auto = none #上下文地址为 my_platform server.servlet.context-path=/my_platform #jpa对实体类的默认字段会把驼峰命名的属性,转换为字段名的时候自动加上下划线。 这个配置的作用就是去掉下划线 #比如属性名称是 createDate, jpa 默认转换为字段名 create_Date。 有了这个配置之后,就会转换为同名字段 createDate spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl #显示 hibernate 执行的sql语句。 这个在上线之后,应该是关掉的,因为大量的 控制台输出会严重影响系统性能,现在调试用 spring.jpa.show-sql=true
为了方便,我先在数据库插入了3条用户信息:
六、验证
到了验证的时候了,先启动后端服务。
接下来,我用postman去请求controller里暴露出来的接口,看看是不是正确的返回数据。
数据正确返回,按照id的倒序。
相关文章推荐
- 优秀开源平台,前后端分离快速开发平台,一站式多端开发(PC+APP)
- java EE技术体系——CLF平台API开发注意事项(2)——后端测试
- 企慧Q5快速开发平台系列之四:“零”代码理念
- RN(react native)入坑指南-06,项目开发结构(代码分层组织)
- 搭搭云这样低代码开发平台对于企业用户有什么好处呢?
- 移动开发多平台代码共享
- 基于低代码平台(Low Code Platform)开发中小企业信息化项目
- vue+mockjs模拟数据实现前后端分离开发的实例代码
- 微信公共服务平台开发(.Net 的实现)13-------网页授权(下 :C#代码的实现 )
- 有点东西!Springboot+vue前后端分离快速开发平台-QuickD
- 自然系统是分层的,软件项目的设计需要减少层的相干性来推动工作的规划。微软的开发平台还是做得不完善,至少aspx界面需要浪费大量的沟通才能设计好。
- 【iCore3应用开发平台】发布 iCore3 应用开发平台出厂代码rev0.0.2
- JEPaaS 7.1.0 重大升级,低代码开发平台
- 深入.net平台的分层开发
- java EE技术体系——CLF平台API开发注意事项(2)——后端测试
- 基于ArcGIS10.0和Oracle10g的空间数据管理平台(C#开发)-AE常用操作代码
- SNF开发平台-SNF.CodeGenerator-升级生成BS页面代码-支持视图-数据库配置-快速开发者的利器
- 微信公共服务平台开发(.Net 的实现)13-------网页授权(下 :C#代码的实现 )
- Linux 3.14的设备树-ARM架构-4412平台,最详细的实战开发代码(二)
- 敏捷开发平台(可0代码开发)