マイクロプロジェクトは:あなたがはじめSpringBootを使用してステップバイステップで取る(B)

今日はJPAプロジェクトを使用して行うことを説明するページネーションありません

あなたは友人を初めて使用する場合はご返送ください
前:マイクロプロジェクトを(A)

Mavenの統合

ファイルにポンポンdependencies次の依存関係の依存関係をインポートします

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

その後、プロジェクトを再起動して

、我々は最高のプロジェクトのうち、実行してTomcatを実行した後にそれを見ることができます

ここでは、404エラーの出現を見ることができます。これは間違っているが、右側に出てますが。

プロジェクトを設定し、検索を高めましょう

小切手で行う前に、我々は2つのパッケージを作成する必要があります。

私たちは、物事を一つずつ埋めてみましょう。

サービス

それは、データ処理方向、およびプロセスを含む論理サービス層です。

第一の方法は、ここで理解しやすい記事がデータベースに追加されていることです。

第二の方法は、ページングのためにデータベースの意味を確認することで、

なぜそれを行いますか?簡単に言えば、我々はそれを行うにはあまりにも多くのデータを表示することができない場合。IDは、逆の順序で配置されています。

package cn.baldorange.anonymous.service;

import cn.baldorange.anonymous.entity.Wall;
import cn.baldorange.anonymous.repository.WallRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import java.util.Date;

@Service
public class WallService {
    @Autowired
    WallRepo wallRepo;

    /**
     * 增加吐槽
     * @param title
     * @param content
     * @return
     */
    public Boolean saveNewWall(String title,String content){
        try {
            String summary = "";
            if (content.length() > 100)
                summary = content.substring(0, 99);
            else summary = content;
            Wall wall = new Wall(title, content, new Date(), summary, "0");
            wallRepo.save(wall);
            return true;
        }catch (Exception e){
            return false;
        }
    }



    /**
     * 获得匿名墙的所有文章
     * @return
     */
    public Page<Wall> findAllWalls(Integer page,Integer size){
        if(page == null) page = 0;
        if(size == null) size =10;
        PageRequest pageable = PageRequest.of(page, size, Sort.Direction.DESC, "id");
        return wallRepo.findAll(pageable);
    }
}

コントローラ

コントローラ層は比較的単純であるため、

しかし、注意を払うように、サーブレットの学生から、@PutMapping実際には、現在一般的に使用されていないだけで、HTTP GETリクエストとポストも削除置いて、私たちは前に見たことがない、これはあなたが思うかもしれもたらす、規定は、人工です人々は変更することができます。

package cn.baldorange.anonymous.controller;

import cn.baldorange.anonymous.entity.Wall;
import cn.baldorange.anonymous.service.WallService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/walls")
public class Controller {
    @Autowired
    WallService wallService;

    @PutMapping("/saveNewWall")
    public Boolean saveNewWall(@RequestParam String title,@RequestParam String content){
        return wallService.saveNewWall(title,content);
    }


    @GetMapping("/findAllWalls")
    public Page<Wall> findAllWalls(Integer page, Integer size){
        return wallService.findAllWalls(page,size);
    }

}

アクセス権を設定した後、私たちはここから:
http://127.0.0.1:8080/walls/findAllWalls

これは、我々はJSONデータを見てきたものです

混乱が、しかし、我々は簡単に私達のデータベース内のコンテンツがあることを見つけることができます。他のものがあります。

ここでは、インタフェースファイルを設定する必要があります。

濶歩

私は、フロントエンドまたはバックエンドの開発の両方が、多かれ少なかれインターフェースのマニュアルを参照して拷問されていると信じています。フロントエンド、バックエンド・インターフェースは、多くの場合、文書が実際の状況と矛盾していると文句を言います。私は書くことやメンテナンスは多くのエネルギー、多くの場合、手遅れ更新の費用がかかります、バックエンドインターフェイスのドキュメントを感じます。実際には、両方のフロントエンド、バックエンドの呼び出しは、バックエンドまたはバックエンドのコールを、優れたインタフェースのマニュアルを持っていることを期待しています。しかし、プログラマのためのインタフェースのドキュメントは、単にコメントとして、多くの場合、他の誰かによって書かれたコードは、しかし、ノートを書いていない起動するための独自のコードを書くために、最も厄介な、だけでなく、コメントを書き込むと文句を言います。だからだけで、時間をかけて、十分ではありません規制するために、反復バージョンを皆を強制することにより、インタフェースのドキュメントでは、コードに追いつくために、多くの場合、非常に簡単です。

最初に導入闊歩の達人

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

:次のようにその後、我々は最終的なパッケージのディレクトリを作成

swaggerConfig設定ファイルを次のように:

package cn.baldorange.anonymous.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class swaggerConfig {
    @Bean
    Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build()
                .apiInfo(new ApiInfoBuilder().description("项目").build());
    }
}

OK今、我々はプロジェクトを再起動します
と訪問ここで、

[OK]を、私たちは今、テスト闊歩インタフェース、フライドチキンスティックを使用することができます。

ページング

データベースのページには、クエリが駒の指定された数ではなく、完全なデータをチェックアウト1回のデータの指定された数であることを除いて、データベースにクエリを書かれています。

サイズ= 2は、以下を返す場合

サイズ= 2、ページ= 2は、以下を返す場合

、ページサイズまたは範囲外で、以下を返す場合

ここでは、次のように後のフィールド説明]タブ:

{
    "content": [{}], // 数据列表
    "last": true, // 是否最后一页
    "totalPages": 1, // 总页数
    "totalElements": 1, // 数据总数
    "sort": null, // 排序
    "first": true, // 是否首页
    "numberOfElements": 1, // 本页数据条数
    "size": 10, // 每页长度
    "number": 0 // 当前页序号
}

参照することは困難ではない、JPAのページングメカニズムがあまりにもクールなことはありません、特に便利です。

Gitはプッシュアップ

OK、今日は、完了時に住んでいます。

おすすめ

転載: www.cnblogs.com/godoforange/p/11615740.html