数据库准备完事儿,现在可以撸后端代码了。

现在想要探索前后端如何交互,得后端返回出数据才行,既然如此,那就先来撸一个返回用户信息,然后就可以判断前端传来的用户名和密码是不是存在,存在的话就可以登录(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 List userList() {

// 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 List userList() 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的倒序。

mysql 编码分层_【平台开发】— 5.后端:代码分层相关推荐

  1. Android端+java后端+servlet+MySQL的型男塑造平台【前后端源代码+论文+答辩ppt】

    活动地址:毕业季·进击的技术er 目录 前言 第一章 绪论 1.1 背景和意义 1.2 国内外研究现状 1.3 论文研究目标与内容 1.4.减肥瘦身相关概念与计算方式介绍 第二章 需求分析 2.1 平 ...

  2. python开发前端后端区别_前端开发与后端开发有什么区别?

    有些人对前端开发和后端开发还存在着疑惑,其实顾名思义,前端开发就是用户看得见摸得着的东西,而后端更多的是与数据库进行交互以及处理相应的业务逻辑.其实主要区别体现在以下两个方面:知识结构与实现和工作职责 ...

  3. 前端还是java哪个更累_前端开发和后端开发的区别?这两者哪个更累?

    前端开发和后端开发的区别有哪些?前端开发和后端开发哪个做起来更累?对于刚接触开发的朋友可能会有这样的疑问,下面就一起来了解下吧! 1.前端开发: 网站的"前端"是与用户直接交互的部 ...

  4. 微信公众平台消息储存mysql php_微信公众平台开发如何保证access

    [编者按]由CSDN和<程序员>杂志联合主办的2014年微信开发者大会将于8月23日在北京举行.内容涵盖企业服务号开发和高级应用.企业号开发.业务系统对接.高级接口运用.微信支付.智能客服 ...

  5. GitHub 近两万 Star,无需编码,可一键生成前后端代码,这个开源项目有点强!...

    github地址:https://github.com/zhangdaiscott/jeecg-boot 项目介绍: JeecgBoot 是一款基于代码生成器的低代码开发平台!前后端分离架构 Spri ...

  6. GitHub 30.2K Star,无需编码,可一键生成前后端代码,这个开源项目有点强!

    前言 今天,推荐一个系统项目.第一次使用就有点上头,爱不释手,必须要推荐给大家.上次是谁要的系统项目啊,我帮你找到了. 这是我目前见过最好的系统项目.功能完整,代码结构清晰.值得推荐. 项目介绍 最近 ...

  7. 3.设计模式之分层思维:为什么要做代码分层架构?

    一.代码分层架构是什么 软件程序通常有两个层面的需求: 功能性需求,简单来说,就是一个程序能为用户做些什么,比如,文件上传.查询数据等: 非功能性需求,这个是指除功能性需求以外的其他必要需求,比如,性 ...

  8. java后端和js后端的区别_前端开发和后端开发有什么区别?

    展开全部 一.定义不同 前端32313133353236313431303231363533e4b893e5b19e31333433656161是什么 前端即网站前台部分,运行在PC端,移动端等浏览器 ...

  9. mysql 编码错误_【分享】MySQl操作系统提示错误编码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在 Unix 系统中,使用 perror 程序来显示操作系统错误编码的含义,它包含在 MySQL 的分发中. 下面的列表显示常见的 Linux 系统错误代 ...

  10. mysql落地方案_平台落地方案.doc

    平台落地方案 江苏省教育管理信息中心 江苏省电化教育馆 江 苏 省 教 育 信 息 化 公 共 服 务 平 台 推广应用落地方案 <江苏省教育信息化公共服务平台>推广应用落地实施方案(草) ...

最新文章

  1. rails安装与卸载
  2. 趣谈网络协议笔记-零
  3. python股票交易编程最好的书_用Python 进行股票分析 有什么好的入门书籍或者课程吗?...
  4. MySQL优化器cost计算
  5. python 百度网盘下载提速_教你如何百度网盘的提高下载速度?
  6. MySQL索引背后的数据结构及算法原理(employees实例)
  7. 仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表中为标识列指定显式值问题...
  8. 1684. 统计一致字符串的数目
  9. vbs格式编程教程基础
  10. iec611313标准下载_iec611313编程标准.ppt
  11. MPEG4写为avi文件
  12. c语言找adc最小值,STC12C5A60S2 AD转换C语言示例程序(ADC查询方式)
  13. 《程序员的创世传说》设定资料
  14. java手风琴代码_JavaScript实现手风琴效果
  15. c语言圆环内外半径圆环面积,《圆环的面积》微课教学设计
  16. Visual Studio弃Coded UI Test 给开发者建议
  17. 小红书3大新功能上线,提升笔记转化率和品牌投放效果
  18. 数据库的主要设计步骤
  19. iOS迅雷安装最新方法,免签稳定,看教程!
  20. ABB机器人之安装备选软件包

热门文章

  1. leetcode-寻找两个正序数组的中位数
  2. Mish = x*tanh(ln(1+e^x))
  3. tensorflow 入门实例(二)
  4. python 笔记:time calendar
  5. 李宏毅线性代数笔记1:系统
  6. python爬虫应用实战-如何爬取表情进行斗图?丰富你的表情库
  7. R语言实战应用精讲50篇(五)-多重线性回归系列之模型拟合
  8. 机器学习中的数学(3)-模型组合(Model Combining)之Boosting与Gradient Boosting
  9. WEB开发三层架构概述
  10. excel vba 使用mschart_使用VBA时不妨借力Excel催化剂的能力,开发更加轻松便捷