mysql 编码分层_【平台开发】— 5.后端:代码分层
數據庫準備完事兒,現在可以擼后端代碼了。
現在想要探索前后端如何交互,得后端返回出數據才行,既然如此,那就先來擼一個返回用戶信息,然后就可以判斷前端傳來的用戶名和密碼是不是存在,存在的話就可以登錄(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的倒序。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的mysql 编码分层_【平台开发】— 5.后端:代码分层的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ssh mysql转发_ssh转发代理:
- 下一篇: mysql数据库连接配置路径_[zz]M