JavaのWeb開発は、一般的にウェブ層(コントローラが要求を受け入れ、応答を返す、制御データ)、レイヤサービス(ビジネスロジック)、データベース操作層を含みます。
JavaWeb古典的な3層フレームワーク
私たちはしばしば、それがJavaWebユニークであると言うことですJavaWebが提案した3層のフレームワーク、と言います!
いわゆる三層は、プレゼンテーション層(WEB層)、ビジネスロジック(ビジネスロジック)、およびデータアクセス層(データアクセス)です。
* WEB層:サーブレット、JSPを備えるなどWEBコンテンツに関連する;
*ビジネス層:ビジネス層は、JavaWebのAPIが含まれていない、それが唯一のビジネスロジックに関係している;
*データ層:作られたトランザクション層の細部のデータベースへのパッケージアクセス追加されたデータ、削除、変更、更新のためのデータベースの直接操作、検索、その他。
Webサービス層依存層、ビジネス層に依存するデータ層、データ層操作データ!
注:
サービス層、例えば要求、応答などでJavaWebのAPIを表示されません。言い換えれば、ビジネス層のコードは、再利用可能である
にも非Web環境に適用することができます。各サービス層の方法は、ユニバーサル、例えば、転写ビジネスメソッドとして理解することができます。
注意:
注釈データ・アクセス・コンポーネントのリポジトリ@、(例えば、アクションストラット)アセンブリ注釈層を制御するためのコントローラ@ビジネス層コンポーネントの@Serviceラベル、すなわちDAOコンポーネント、アセンブリが良いリターンでない場合、アセンブリ@Componentを指しクラスは、我々は、マークに、このアノテーションを使用することができます。
1.完全なエンティティオブジェクト(書籍)の設定
package com.lrm.domain;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
private String author;
private int status;
private String description;
public Book() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
2.コンフィギュレーションデータ層の動作
インタフェースを作成する、JpaRepository継承インターフェイスは、データ操作の後に提供されてもよいJPA
import org.springframework.data.jpa.repository.JpaRepository;
public interface BookRepository extends JpaRepository<Book,Long> {
}
3.固定ビジネス層(サービス)
为了让controller可以注入BookService使用注解@Service
import com.lrm.domain.Book;
import com.lrm.domain.BookRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BookService {
@Autowired
//@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,
// 完成自动装配的工作。
// 通过 @Autowired的使用来消除 set ,get方法。
private BookRepository bookRepository;
/**
* 查询所有的书单列表
* @return
*/
public List<Book> findAll() {
return bookRepository.findAll();
}
/**
* 提交一个书单信息
* @param book
* @return
*/
public Book save(Book book) {
return bookRepository.save(book);
}
/**
* 获取一条书单信息
* @param id
* @return
*/
public Book findOne(Long id) {
//return bookRepository.findOne(id);//2.0.0.以上版本
return bookRepository.findById(id).get();//2.0.0.以下版本
}
/**
* 删除一条书单信息
* @param id
*/
public void delete(long id) {
bookRepository.deleteById(id) ;//2.0.0.以上版本
// bookRepository.delete(id);//2.0.0.以下版本
}
}
4.web层(controller,控制数据的接受请求和返回响应)
读取数据
添加数据
更新数据
以下两种方法都可以:
方法一:
/**
* 更新一个书单
* @param id
* @param name
* @param author
* @param description
* @param status
* @return
*/
@PutMapping("/books")
public Book update(@RequestParam long id,
@RequestParam String name,
@RequestParam String author,
@RequestParam String description,
@RequestParam int status) {
Book book = new Book();
book.setId(id);
book.setName(name);
book.setAuthor(author);
book.setDescription(description);
book.setStatus(status);
return bookService.save(book);
}
方法二:
/**
* 更新一个书单
* @param id
* @param name
* @param author
* @param description
* @param status
* @return
*/
@PutMapping("/books")
public Book update(Book book) {
return bookService.save(book);
}
删除数据
/**
* 删除一个书单
* @param id
*/
@DeleteMapping("/books/{id}")
public void deleteOne(@PathVariable long id) {
bookService.delete(id);
}
源码链接:
链接:https://pan.baidu.com/s/15O5ZefBWxP-RWyZwtOXtmA
提取码:pbt4