国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

一份 Spring Boot 項目搭建模板

共 16132字,需瀏覽 33分鐘

 ·

2021-03-11 11:45

建立一個全新的項目,或者把舊的龐大的項目,進行拆分成多個項目。在建立新的項目中,經(jīng)常需要做一些重復的工作,比如說拷貝一下常用的工具類,通用代碼等等。所以就可以做一個基礎的項目方便使用,在經(jīng)歷新項目的時候,直接在基礎項目上進行簡單配置就可以開發(fā)業(yè)務代碼了。

基礎項目該包含哪些東西:

  • Swagger在線接口文檔。
  • CodeGenerator 代碼生成器。
  • 統(tǒng)一返回。
  • 通用的分頁對象。
  • 常用工具類。
  • 全局異常攔截。
  • 錯誤枚舉。
  • 自定義異常。
  • 多環(huán)境配置文件。
  • Maven多環(huán)境配置。
  • 日志配置。
  • JenkinsFile。
可以在評論區(qū)進行補充,我把 Spring Boot 相關的文章整理成了 PDF,關注 Java后端,后臺回復 666 下載這本 Java技術棧手冊。


Swagger

寫接口文檔通常是一件比較頭疼的事情,然而swagger就用是用來幫我們解決這個問題的。可以在線生成接口文檔,并且可以在頁面上進行測試。
可以非常清楚的顯示,請求數(shù)據(jù)已經(jīng)響應數(shù)據(jù)。當然這一切都需要在代碼中進行配置。
注意的點:接口文檔只能在測試/開發(fā)環(huán)境開啟,其他環(huán)境請關閉。


常用的Swagger注解


  • @Api用于Controller
  • @ApiOperation用于Controller內的方法。
  • @ApiResponses用于標識接口返回數(shù)據(jù)的類型。
  • @ApiModel用于標識類的名稱
  • @ApiModelProperty用于標識屬性的名稱


案例

@RestController
@Api(tags = "用戶")
@AllArgsConstructor
@RequestMapping("/user")
public class UserController {
    private IUserService userService;

    
    @ApiOperation("獲取用戶列表")
    @GetMapping("/listUser")
    @ApiResponses(
            @ApiResponse(code = 200, message = "操作成功", response = UserVo.class)
    )
    public ResultVo listUser(@Validated ListUserForm listUserForm){
        return ResultVoUtil.success(userService.listUser(listUserForm));
    }

}


@Data
@ApiModel("獲取用戶列表需要的表單數(shù)據(jù)")
@EqualsAndHashCode(callSuper = false)
public class ListUserForm extends PageForm<ListUserForm> {
    
    @ApiModelProperty("用戶狀態(tài)")
    @NotEmpty(message = "用戶狀態(tài)不能為空")
    @Range(min = -1 , max = 1 , message = "用戶狀態(tài)有誤")
    private String status;

}
對應的swagger的配置可以查看基礎項目內的SwaggerConfiguration.java.

CodeGenerator代碼生成器。

mybatis_plus代碼生成器可以幫我們生成
entity,service,serviceImpl,mapper,mapper.xml。省去了建立一大堆實體類的麻煩。
由于配置太長這里就不貼出來了,對應的CodeGenerator的配置可以查看基礎項目內的CodeGenerator.java.

常用的封裝


統(tǒng)一返回 ResultVo

將所有的接口的響應數(shù)據(jù)的格式進行統(tǒng)一。
@Data
@ApiModel("固定返回格式")
public class ResultVo {
    
    @ApiModelProperty("錯誤碼")
    private Integer code;

    
    @ApiModelProperty("提示信息")
    private String message;

    
    @ApiModelProperty("響應數(shù)據(jù)")
    private Object data;

}

抽象表單 BaseForm

public abstract class BaseForm<T> {
    
    public abstract T buildEntity();

}


有小伙伴可能有疑問了,這個類有啥用呢。先看一下,下面的代碼。


@Override
public boolean addUser(AddUserForm userForm) {
        User user = new User();
        user.setNickname(userForm.getNickname());
        user.setBirthday(userForm.getBirthday());
        user.setUsername(userForm.getUsername());
        user.setPassword(userForm.getPassword());
        return save(user);
    }
重構一下,感覺清爽了一些。
@Override
public boolean addUser(AddUserForm userForm) {
    User user = new User();
    BeanUtils.copyProperties(this,user);
    return save(user);
}
使用BaseForm進行重構 AddUserForm 繼承 BaseForm并重寫buildEntity

@Data
@EqualsAndHashCode(callSuper = false)
public class AddUserForm extends BaseForm<User> {
    
    private String nickname;

    private Date birthday;
    
    private String username;
    
    private String password;

    
    @Override
    public User buildEntity() {
        User user = new User();
        BeanUtils.copyProperties(this,user);
        return user;
    }
}

@Override
public boolean addUser(AddUserForm userForm) {
    return save(userForm.buildEntity());
}

上面的代碼有沒有種似曾相識的感覺,很多情況都是將接受到的參數(shù),轉變成對應的實體類然后保存或者更新。所以對于這類的form可以繼承baseform并實現(xiàn)buildEntity()這樣可以更加符合面向對象,service不需要關心form如何轉變成entity,只需要在使用的時候調用buildEntity()即可,尤其是在form -> entity相對復雜的時候,這樣做可以減少service內的代碼。讓代碼邏輯看起來更加清晰。


通用的分頁對象

涉及到查詢的時候,絕大多數(shù)都需要用到分頁,所以說封裝分頁對象就很有必要。可以注意下 PageForm.calcCurrent()PageVo.setCurrentAndSize()PageVo.setTotal()這個幾個方法。

PageForm

@Data
@ApiModel(value = "分頁數(shù)據(jù)", description = "分頁需要的表單數(shù)據(jù)")
public class PageForm<T extends PageForm<?>>{
    
    @ApiModelProperty(value = "頁碼 從第一頁開始 1")
    @Min(value = 1, message = "頁碼輸入有誤")
    private Integer current;

    
    @ApiModelProperty(value = "每頁顯示的數(shù)量 范圍在1~100")
    @Range(min = 1, max = 100, message = "每頁顯示的數(shù)量輸入有誤")
    private Integer size;

    
    @ApiModelProperty(hidden = true)
    public T calcCurrent(){
        current = (current - 1 ) * size;
        return (T) this;
    }
}

PageVo

@Data
public class PageVo<T> {
    @ApiModelProperty(value = "分頁數(shù)據(jù)")
    private List<T> records;
    @ApiModelProperty(value = "總條數(shù)")
    private Integer total;
    @ApiModelProperty(value = "總頁數(shù)")
    private Integer pages;
    @ApiModelProperty(value = "當前頁")
    private Integer current;
    @ApiModelProperty(value = "查詢數(shù)量")
    private Integer size;
    @ApiModelProperty(hidden = true)
    public PageVo<T> setCurrentAndSize(PageForm<?> pageForm){
        BeanUtils.copyProperties(pageForm,this);
        return this;
    }
    @ApiModelProperty(hidden = true)
    public void setTotal(Integer total) {
        this.total = total;
        this.setPages(this.total % this.size > 0 ? this.total / this.size + 1 : this.total / this.size);
    }
}

案例


ListUserForm


@Data
@ApiModel("獲取用戶列表需要的表單數(shù)據(jù)")
@EqualsAndHashCode(callSuper = false)
public class ListUserForm extends PageForm<ListUserForm> {
    
    @ApiModelProperty("用戶狀態(tài)")
    @NotEmpty(message = "用戶狀態(tài)不能為空")
    @Range(min = -1 , max = 1 , message = "用戶狀態(tài)有誤")
    private String status;

}


UserServiceImpl


@Override
public PageVo<UserVo> listUser(ListUserForm listUserForm) {
    PageVo<UserVo> pageVo = new PageVo<UserVo>().setCurrentAndSize(listUserForm);
    pageVo.setTotal(countUser(listUserForm.getStatus()));
    pageVo.setRecords(userMapper.listUser(listUserForm.calcCurrent()));
    return pageVo;
}

private Integer countUser(String status){
    return count(new QueryWrapper<User>().eq("status",status));
}


UserController


@ApiOperation("獲取用戶列表")
@GetMapping("/listUser")
@ApiResponses(
        @ApiResponse(code = 200, message = "操作成功", response = UserVo.class)
)
public ResultVo listUser(@Validated ListUserForm listUserForm){
    return ResultVoUtil.success(userService.listUser(listUserForm));
}
注意的點
  • PageVo在實例化的時候需要設置當前頁每頁顯示的數(shù)量 可以調用setCurrentAndSize()完成。
  • 進行分頁查詢的時候,需要計算偏移量。listUserForm.calcCurrent()
為什么要計算偏移量呢?
  • 假如查詢第1頁每頁顯示10條記錄,前端傳遞過來的參數(shù)是current=1&amp;&amp;size=10,這個時候limit 1,10沒有問題。
  • 假如查詢第2頁每頁顯示10條記錄,前端傳遞過來的參數(shù)是current=2&amp;&amp;size=10,這個時候limit 2,10就有問題,實際應該是limit 10,10。calcCurrent()的作用就是如此。
為什么不用MybatisPlus自帶的分頁插件呢? 
自帶的分頁查詢在大量數(shù)據(jù)下,會出現(xiàn)性能問題。

常用工具類

常用工具類可以根據(jù)自己的開發(fā)習慣引入。

異常處理

異常處理的大致流程主要如下。
  • 異常信息拋出 -> ControllerAdvice 進行捕獲格式化輸出內容
  • 手動拋出CustomException并傳入ReulstEnum ——> 進行捕獲錯誤信息輸出錯誤信息。


自定義異常


@Data
@EqualsAndHashCode(callSuper = false)
public class CustomException extends RuntimeException {
    
    private final Integer code;

    
    private final String method;

    
    public CustomException(ResultEnum resultEnum, String method) {
        super(resultEnum.getMsg());
        this.code = resultEnum.getCode();
        this.method = method;
    }

    
    public CustomException(Integer code, String message, String method) {
        super(message);
        this.code = code;
        this.method = method;
    }

}


錯誤信息枚舉

根據(jù)業(yè)務進行添加。
@Getter
public enum ResultEnum {
    
    UNKNOWN_EXCEPTION(100, "未知異常"),
    
    ADD_ERROR(103, "添加失敗"),
    
    UPDATE_ERROR(104, "更新失敗"),
    
    DELETE_ERROR(105, "刪除失敗"),
    
    GET_ERROR(106, "查找失敗"),
    ;

    private Integer code;

    private String msg;

    ResultEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    
    public static ResultEnum getByCode(int code){
        for (ResultEnum resultEnum : ResultEnum.values()) {
            if(code == resultEnum.getCode()){
                return resultEnum;
            }
        }
        return null;
    }

}

全局異常攔截

全局異常攔截是使用@ControllerAdvice進行實現(xiàn),常用的異常攔截配置可以查看 GlobalExceptionHandling。
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandling {
    
    @ExceptionHandler(value = CustomException.class)
    public ResultVo processException(CustomException e) {
        log.error("位置:{} -> 錯誤信息:{}", e.getMethod() ,e.getLocalizedMessage());
        return ResultVoUtil.error(Objects.requireNonNull(ResultEnum.getByCode(e.getCode())));
    }

    
    @ResponseStatus(HttpStatus.OK)
    @ExceptionHandler(Exception.class)
    public ResultVo exception(Exception e) {
        e.printStackTrace();
        return ResultVoUtil.error(ResultEnum.UNKNOWN_EXCEPTION);
    }
}

案例


Controller

@ApiOperation("刪除用戶")
@DeleteMapping("/deleteUser/{id}")
public ResultVo deleteUser(@PathVariable("id") String id){
    userService.deleteUser(id);
    return ResultVoUtil.success();
}


Service

@Override
public void deleteUser(String id) {
    
    if(!removeById(id)){
        throw new CustomException(ResultEnum.DELETE_ERROR, MethodUtil.getLineInfo());
    }
}


結果
將報錯代碼所在的文件第多少行都打印出來。方便排查。
注意的點
所有手動拋出的錯誤信息,都應在錯誤信息枚舉ResultEnum進行統(tǒng)一維護。不同的業(yè)務使用不同的錯誤碼。方便在報錯時進行分辨??焖俣ㄎ粏栴}。

多環(huán)境配置


SpringBoot多環(huán)境配置

對于一個項目來講基本都4有個環(huán)境dev,test,pre,prod,對于SpringBoot項目多建立幾個配置文件就可以了。然后啟動的時候可以通過配置spring.profiles.active 來選擇啟動的環(huán)境。
java -jar BasicProject.jar --spring.profiles.active=prod  


Maven多環(huán)境配置

假如想在打包的時候動態(tài)指定環(huán)境,這個時候就需要借助Maven的xml來實現(xiàn)。
配置XML
<profiles>
    <profile>
        
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <activatedProperties>dev</activatedProperties>
        </properties>
    </profile>
    <profile>
        
        <id>test</id>
        <properties>
            <activatedProperties>test</activatedProperties>
        </properties>
    </profile>
    <profile>
        
        <id>pre</id>
        <properties>
            <activatedProperties>pre</activatedProperties>
        </properties>
    </profile>
    <profile>
        
        <id>prod</id>
        <properties>
            <activatedProperties>prod</activatedProperties>
        </properties>
    </profile>
</profiles>


更改application.yml


spring:
  profiles:
    # 選擇環(huán)境
    active: @activatedProperties@
使用案例


mvn clean package -P prod
mvn clean package -P pre
mvn clean package -P test


打包完可以解壓開查看application.yml 會發(fā)現(xiàn)spring.profiles.active=@activatedProperties@ 發(fā)生了改變。

日志配置

采用logback日志配置

JenkinsFile

JenkinsFile肯定顧名思義是給jenkins用的。主要是配置項目根據(jù)如何進行構建并發(fā)布到不同的環(huán)境。需要去了解pipeline語法,以及如何配置jenkins。
JenkinsFileDemo https://gitee.com/huangxunhui/basic_project/blob/master/Jenkinsfile

代碼地址

https://gitee.com/huangxunhui/basic_project.git

作者: 不一樣的科技宅 

鏈接:juejin.im/post/6844904083942277127


END


順便給大家推薦一個GitHub項目,這個 GitHub 整理了上千本常用技術PDF,絕大部分核心的技術書籍都可以在這里找到,

GitHub地址:https://github.com/javadevbooks/books

Gitee地址:https://gitee.com/javadevbooks/books

電子書已經(jīng)更新好了,你們需要的可以自行下載了,記得點一個star,持續(xù)更新中..



瀏覽 33
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 国产又色又爽又黄又免费| 国产性交网站| 国产第一页在线| av超碰| 亚洲午夜在线观看| 九九色网| 日皮视频在线免费观看| 在线免费观看黄色视频网站| 国产精品免费网站| 亚洲加勒比久久88色综合| 国产精品无码乱伦| 色综合网址| 午夜精品久久久久久不卡8050 | 狼人综合色| 在线看片AV| 久久久久久国际四虎免费精品视频 | 91爱爱·com| 国产第五页| 国产婬片lA片www777| 熟女视频一区二区| 黄片精品| 日韩无码人妻视频| 人人操人人干人人妻| 丰满人妻一区二区三区Av猛交 | 亚洲成人精品少妇| 国产激情在线| 欧美一级a| 三级A片| 午夜成人福利电影| 在线免费看黄片| 泄火熟妇2-ThePorn| 无码福利| 日韩在线视频播放| 91蝌蚪| 爱射综合| 久久AV片| 午夜国产码网站码| 麻豆偷拍| 日韩av在线免费观看| 成人爱爱视频| 大香蕉久草| 夜夜欢天天干| 国产精品一二三区| 99爱视频| 成人无码视频| www.尤物| 殴殴美日韩在线| 97日韩天堂| 亚洲男人天堂| 高颜值呻吟给力| 嫩BBB嗓BBBB榛BBBB| 天天色天天色| 亚洲精品天堂无码AV片| 北条麻妃无码精品AV怎么看 | 中文字幕人成人乱码亚洲电影| 成人黄片免费| 特级西西44www无码| 亚洲超碰在线| 日韩一级免费毛片| 熟女人妻人妻の视频| 在线a视频| 婷婷中文字幕| 8050网午夜| 成人AV无码| www.欧美| 91免费在线视频| 亚洲小视频| 招土一级黄色片| 亚洲中文字幕在线观看视频网站| 欧美A视频在线观看| 人妻无码蜜桃视频| 欧美精品欧美精品系列| 91av导航| 成人777777免费视频色| 人与禽一级A片一区二区三区| xxxxxbbbbb| 摸BBB搡BBB搡BBBB| 超碰人人网| 欧美亚洲自拍偷拍| 99久在线精品99re8| 免费69视频| 国产色播| 欧美另类视频| 国产黄色自拍视频| 日本一级一片免费视频| 国产成人综合自拍| 亚洲性爱一区二区三区| 黄色网址在线观看视频| 国产精品香蕉国产| 成人免费网站在线观看| 亚洲无码一卡二卡| 国产精品久久久久无码| 成人做爰100片免费观看视频| 日本親子亂子倫XXXX50路| 成人特级毛片全部免费播放| 蜜桃久久99精品久久久酒店| www.日韩精品| www天天操| 东京热六区| 国产一级A片在线观看| 色国产视频| 四虎看片| 黄色精品网站| 久久久久久穴| 韩国精品无码一区二区三区18| 麻豆偷拍| 亚洲AV白浆| 亚洲欧美日韩性爱| 成人激情久久| 国产精品久久久久久久牛牛| 91成人视频在线免费观看| 性爱视频免费| 在线免费观看黄色小视频| 成人欧美大片黄18| 欧美成人黄色电影| 亚洲AV无码成人精品国产五月天| 成人三级电影在线观看| 男人资源网| 日本一区二区三区免费观看| 国产在线导航| 免费a在线| xxx国产精品| 69堂在线观看| 精品国产AV无码一区二区三区| 淫香淫色天天影视| 囯产精品一区二区三区线一牛影视1| 粉嫩小泬BBBBBB免费| 亚洲天堂2017| 国产小视频在线观看| 女人自慰网站在线观看| 爽爽午国产浪潮AV性色www| 日韩国产免费| 牛牛精品一区| 99久久久国产精品无码| 婷婷五月激情网| AⅤ中文字幕在线免费观看| 国产精品毛片一区视频播| 欧美激情一区二区A片成人牛牛| 欧美性爱18| 99Re66精品免费视频| 在线免费观看黄色片| 午夜探花| 亚洲Japanese办公室制服| 亚洲色视频在线| 亚洲AV无码成人片在线| 天堂va欧美va亚洲va在线| 亚洲国产婷婷香蕉A片| 婷婷中文字幕| 在线观看日韩三级片av| 国产一区在线播放| 日日操人人操| 中文字幕无码人妻在线视频| 日韩人妻精品无码制服| 一区二区三区av| 牛牛精品一区二区AV| 色哟哟――国产精品| 中文字幕在线观看二区| 99热最新在线| 成人久久| 亚洲一区免费| 亚洲丝袜av| 亚洲成人无码在线播放| 色色欧美| 欧美成人图片视频在线| 国产婬片一级A片AAA毛片AⅤ| 日本69AV| 一级全黄120分钟免费| 三级av在线| 91在线91| 成人自拍视频在线| 国产精品粉嫩福利在线| 天堂中文在线视频| 黄色电影免费网站| 成人H动漫精品一区二区无码| 国产免费啪啪视频| 成人在线激情| 亚洲欧洲成人| 久久夜色精品| wwwxx在线观看| 91三级片在线观看| 特大妓女BBwBBWBBw| 人人操操| 国产精品国内自产拍| 久久av一区二区三区观看| 精品蜜桃秘一区二区三区在线播放| 国产在线中文| 亚洲性爱在线| 午夜福利AV电影| 中文字幕在线观看二区| 免费精品99| 无码三级在线免费观看| 久草大香蕉在线| 日本中文在线观看| 先锋影音av在线| 午夜无码鲁丝片午夜精品一区二区 | 99乱伦| 亚洲精品国产精品乱码视99 | 九热精品| 91福利在线视频| 熟妇一区| 午夜AV福利影院| 亚洲视频,中文字幕| 亚洲国产成人综合| 黑人粗暴偷拍一区二区| 麻豆91蜜桃传媒在线观看| 日本一级大毛片a一| 91精品久久人妻一区二区夜夜夜 | 波多野结衣AV在线播放| 国家一级A片| 国产av天天| 成人肏屄视频| av中文在线| 国产精品视频导航| 毛片高清无码| 岛国AV在线| 日本天堂网站| 久久99久久99| 中文字幕在线观看av| 中文字幕自拍偷拍| h片在线免费观看视频| 婷婷五月天亚洲| 熟女456| 国产熟睡乱子伦午夜视频_第1集| 国产精品成人无码a无码| 最新版本日本亚洲色| 男女草比视频| 日本爽妇网| 国产成人在线视频| 2021天天夜日| 极品久久久| 韩国色情中文字幕| 一级黄色视频片| 国产精品久久久久久久久久九秃| 日韩中字无码黄片| 久久精品五月天| 成人网站一区| 日韩AV毛| 久操免费观看| 国产做受91一片二片老头| 欧美性爱日韩| 激情内射网站| 九九99久久| 围内精品久久久久久久久白丝制服| 无套免费视频欧美| 久操| 91精品丝袜久久久久久| 成人三级视频在线观看| 日韩图片区小说视频区日| 亚洲人妻有码| 中文字幕av无码| 一级成人视频| 国产精品秘久久久久久1-~/\v7-/| 狠狠地操| 国产精品午夜在线| 精品国产一区二区三区久久久蜜月| 最新97色黄色精品高清网站| 色撸撸在线视频| 亚洲va国产天堂va久久en| www日本高清| 午夜成人中文字幕| 成人无码www在线看免费| 91色色影院| а√最新版在线中文8| 欧美一级黄色片| 成人777777免费视频色| 国产在线观看一区二区| 91麻豆天美传媒在线| 大香蕉尹人视频| 精品视频一区二区三区| 四虎成人精品永久免费AV九九| 日韩免费在线播放| www99国产| 三级AV网站| 中文字幕欧美日韩| 久久精品人人| 激情动态视频| 91在线成人视频| 翔田千里無碼破解| gay成人在线观看| 国内不卡一卡二视频| 人妻视频网站| 日韩一区二区视频在线观看| 日韩一区二区免费视频| 妖精视频黄色| 精品无码一区二区三区免费| 精品日韩| 无码导航| 一级片A片| 黄色av网站免费| 少妇人妻无码| 日本v片| 亚洲AV无码久久精品色无码蜜桃| 蜜桃影视| 青娱乐Av| 色就是色欧美| 亚洲视频,中文字幕| 91人妻人人澡人人爽| 欧美高清一级| 伊人网视频在线| 美女福利导航| 男男做受A片AAAA| 欧美后门菊门交4| 国产精品无码av| 欧美激情DVD| 天天看片天天爽| 猫咪视频大全视频| 国产精品一区二区三区在线 | 精品女同一区二区三区四区外站在线| 黑巨茎大战欧美白妞小说| 无码专区在线看v| 九九精品99| 成人网肏逼视频| 校园春色亚洲无码| 日韩黄色电影| 成人网址大全| 国产一卡二卡| 大香蕉a片| 久久久久久久| 91人妻人人澡人人爽精品| 国产激情视频在线| 我爱大香蕉| 麻豆一区二区三区| 日韩精品无码电影| 69无码| 久热激情| 99re国产| 97国产资源| 91内射| 久草免费在线观看视频| 国产黄色电影| A片免费观看视频| 国产欧美综合精品| 国产精品不卡在线观看| 婷婷综合缴情亚洲另类在线| 中文字幕一区二区二三区四区| 日本一级片在线播放| 成年女人免费视频| 成人手机看片| 99成人视频| 艹B视频| 久久久久免费| 91无码高清视频| 午夜高清| 日韩一区二区三区四区久久久精品有吗| 亚洲欧洲中文字幕| 人人射人人干| 五月丁香六月婷| 久久中文字幕人妻| 91啪啪| 亚洲黄色电影网| 92午夜福利天堂视频2019| 五月丁香婷婷激情| 亚洲无码三级片在线观看| 免费看国产黄色视频| 高清毛片AAAAAAAAA片| 国产黄色免费乱伦片| 日韩三级视频在线观看| 中国操逼视频| 一本色道久久综合无码人妻四虎 | 四川少妇搡BBw搡BBBB搡| 国产精品一卡二卡| 人人摸人人看人人| 天天插天天干| 中文一线二线视频| 夜夜撸| 波多野结衣日韩| 成人午夜A片免费看| 99精品久久久久久无码| 免费高清无码视频在线观看| 国产av影视| 97国产精品久久| aa无码视频| 怡春院亚洲| 99久久国产视频| 一级a片在线观看| 亚洲人免费视频| 久久久国产视频| 夜夜爽妓女77777毛片A片| 丁香婷婷五月综合影院| 亚洲AV无码成人精品区| 黄色视频在线观看| 91成人影片| 亚洲免费观看高清完整版在线观 | 午夜成人福利视频在线观看| 无码成人AV| 亚洲国产免费视频| 国产高清无码免费| 亚洲AV无码专区在线播放中文 | www.插插插| 亚洲黄色免费看| 2025AV中文字幕| 国产视频一区二区三区四区五区| 波多野结衣视频在线观看| 亚洲一区中文字幕| 人妻精品无码| 九九视屏| 在线免费观看黄色片| 黄片网站在线免费观看| 毛片毛片毛片| 国产精品粉嫩福利在线| 大香蕉99热| 中日韩欧美一级A片免费| 欧美成人大片| 操逼视频国产91| 中文字幕在线观看AV| 免费看的操逼视频| 男人午夜AV| 中文字幕在线观看网址最新地址| 一级a片在线播放| 日韩激情视频| 人妻体内射精一区二区三区| 88AV在线观看| 天天操天天干天天日| 91精品在线免费观看| 国产午夜福利免费视频在线观看 | 夫妻-ThePorn| 国产免费观看av| 五月丁香大香蕉| 国产成人无码一区二区在线播放| 青娱乐在线成人| 92丨九色丨偷拍老熟女| 欧美性猛交ⅩXXX无码视频| 国产成人精品AA毛片| www.97av| 人妻少妇被猛烈进入中文字幕| 91女人18毛片水多的意思| 日逼黄色视频| 最新日韩在线| 成人区精品一区二区婷婷| 91九色TS另类国产人妖| 在线免费小黄片| 亚洲精品中文字幕无码| 日中文字幕| 韩国精品一区| 西西888WWW大胆无码| 天堂a在线| 91嫩草久久久久久久| 亚洲高清免费视频| 国产av不卡| 超碰人人人人人人人人| 亚洲无码人妻| 欧美一级婬片AAAA毛片| 丁香六月久久| 波多野无码| 一本道高清无码视频| 山西真实国产乱子伦| 国产美女被| 日韩无码精品视频| 青春草免费视频| 韩国gogogo高清在线完整版| 成人免费毛片视频| 欧美乱码| 欧洲美一区二区三区亚洲| 激情婷婷亚洲| 国产第二页| 日本一区免费| 免费黄色一级视频| 日韩免费在线观看一区入口| 无码一区二区三区在线| 人人爱人人摸人人操| 一本色道久久88亚洲精品综合| 国产一级内射| 五月天开心网| 波多野结衣在线观看一区二区| 黄色片久久久| 伊人色五月| 看一级黄色片| 91精品丝袜久久久久久| 性色a| 免费人妻视频| 京东一热本色道久久爱| 亚洲国产视频一区| 婷婷激情中文字幕| 俺去俺来也www色视频| 熟妇人妻丰满久久久久久久无码 | 日韩a电影| 午夜在线免费视频| 东北女人毛多又黑A片| 精品日韩| 中文无码在线视频| 亚洲码无人客一区二区三区| 成年人免费网站| 污污的网站18| 成人在线视频网| 精品一区无码| 亚洲AV无码成人精品区久| 五月天婷婷色播| 国产一级内射| 狠狠穞A片一區二區三區| 色欲网址| 国产一级做a爱免费视频| 看国产AA免费| 色色亚洲| 欧美A黄| 免费无码婬片AAAA片在线蜜芽| 国产热视频| 日韩精品成人| 琪琪色视频| 五月天久久| 97午夜福利视频| 五月激情黄色| 一级性爱视频| 一级黄色电影免费看| 波多野结衣一级婬片A片免费下载| 久草大香蕉在线| 人妻超碰在线| 欧美中文字幕在线观看| 2018最好看的中文字幕高清电影 | 粗长哭叫打桩H体育生| 亚洲黄色在线播放| 亚洲婷婷小说| 色男人的天堂| 日韩A电影| 亚洲黄色一区| 免费版成人久久幺| 综综综综合网| 久久精品色| 亚洲无码视频免费观看| 亚洲色情在线观看| 高清无码二区| 91亚洲精品视频在线| 国产女人水真多18毛片18精品| 久操综合视频在线| 香蕉成人A片视频| 18岁毛片| 懂色av懂色av粉嫩av无码| 欧美中文字幕视频| 国产精品一区二区AV日韩在线| 亚洲在线高清视频| 国产成人精品一区二区| 播五月婷婷| 熟妇在线| 日本电影一区二区三区| 五月天操逼网站| 玖玖热在线视频| 人人操人人爽| 黑人无码视频| 大鸡巴视频在线观看| 亚洲精品久久久蜜桃| 摸BBB搡BBB搡BBBB| 亚洲天堂无码av| 国产精品成人3p一区二区三区| 内射午夜福利在线免费观看视频 | 搞搞电影91| 俺去也| 久久久国产精品黄毛片| 91天天射| 在线观看日韩AV| 成人激情免费视频| 在线观看亚洲中文字幕| 伊人影院在线免费观看| 国产欧美日本视频| 啪啪啪免费网站| 国内自拍视频在线观看| 中文字幕永久| 嫩草视频网站| 91视频在线网站| 亚洲射色| 欧一美一婬一伦一区?| 91麻豆一区二区| 亚洲AV无码乱码AV| 日韩欧美国产| 天天拍夜夜操| 亚洲精品日韩无码| 亚洲无码一级片| 操逼视频网址| 午夜天堂精品久久久| 99黄色电影| 北条麻妃九九九在线视频| 内射日韩| 91香蕉在线观看视频在线播放| 夜夜撸| 大香蕉网址| 最新一区二区三区| 在线观看禁无码精品| 国产操操操| 亚洲小说欧美激情另类A片小说| 成人在线毛片| 特一级黄色视频| 97超碰中文字幕| 午夜尤物| 瑟瑟免费视频| 特级西西444www高清大胆免费看 | 天天综合在线观看| 亚洲理论| 天天日天天草天天干| 超碰碰人人| 西西444WWW无码视频软件功能介绍 | 人妻无码久久精品人妻成人| www.99| 色婷婷导航| 97人人爽| 老鸭窝在线观看视频| 各种妇女撒尿mm毛免费网站| 麻豆传媒在线播放| 91国产在线播放| 国产高潮白浆喷| 天天爽天天摸| 色婷婷18正码国产| 欧美黄色免费在线观看| 无码在线专区| 国产思思99re99在线观看| 成年人黄色视频免费观看| 1024手机在线观看| 国产精品视频一区二区三区在线观看| 欧美性视频网站| 午夜3D动漫AV| 欧美第一页| 日韩成人片| 久久久久亚洲| 欧美午夜精品| 日韩91| 99热这里只有精品9| 无码人妻一区二区三区精品不付款 | 激情小说亚洲图片:伦| 无码东京热国产| 电影豹妹香港版| 夜夜撸| 高清无码免费| 丁香婷婷男人天堂| 免费黄色网址啊不卡| 精品一区二区三区三区| 日本精品一区二区| 日本黄色电影网站| 人人色人人色| 91精品在线播放| 黄网站在线观看| 国产免费一区二区三区四区六区在线| 69久久| 高清无码免费在线观看| 青草视频在线| 国产xxxx| 99视频在线| 亚洲福利视频电影精| 欧美猛男的大鷄巴| 天天都色| 免费成人AV| 国产喷水ThePorn| 18SAV| 老太奶性BBwBBw侧所| 丁香五月亭亭| 在线看黄网| 人妻体体内射精一区二区| 无码任你操| 尤物视频入口| 日日爱99| 亚洲免费视频网站| 久久久高清无码视频| 动漫一区二区三区| 亚洲福利免费观看| 操逼网五月天| 国产人妻精品一二三区| 免费看黄色的视频| 999大香蕉| 超碰在线观看免费| 操片| 好吊视频一区二区| 69AV在线视频| 怡春院国产| 日日AV| 日本黄色免费网站| 淫一区二区| 夜夜骚| 欧美高清国产| 日韩一级在线视频| 99精品网站| 天堂a在线8| 国产亚洲精品久久久久久桃色| 成人毛片18女人毛片真水| 西西人体44www大胆无码| 久久黄色小视频| 丰满人妻一区二区| 国产伊人久久| 五月丁香伊人| 成人三级片网站| 国产精品福利在线| 淫乱人妻| 日韩欧美日本| 四虎av在线播放| 91黄网站在线观看| 操逼123首页| 亚洲中文字幕色| 成人爱爱免费视频| 91丨九色丨熟女丰满| 91好爽| 在线超碰| 这里有精品| 逼特逼| 人妻无码91| av在线观看网站| 国精自拍| 在线视频久| 亚洲综合在线观看视频| 国产福利91| 免费黄色网页| 水果派av解说| 蜜桃视频| 国产精品色情A级片| 亚洲无码免费视频在线观看| 无码在线播放视频| 蜜桃人妻无码| 日木毛片| 国产aⅴ激情无码久久久无码| 9i看片成人免费视频| 91乱子伦国产乱子伦| 亚洲黄色AV| 人妻少妇91精品一区黑人| 欧美乱欲视频| 青青草网站在线观看| 亚洲乱伦网站| 亚洲秘一区二区三区-精品亚洲二区- | 亚洲AV无码一区二区三竹菊| 亚洲国产精品欧美久久| 欧美色图视频在线观看| 97超碰中文字幕| 2019人人操| 亚洲精品999| 91探花国产综合在线精品| 亚洲电影在线观看| 久久毛久久久j| 大逼影院| 中文在线A∨在线| 超碰人人网| 亚洲制服在线观看| 7799精品视频| 日韩一级在线| 一級免費网站| 亚洲午夜激情电影| 欧美婬乱片A片AAA毛片地址| 欧美在线黄片| www.色五月| 亚洲av网站| 五月婷婷色欲| 亚洲小骚逼| 中文字幕免费MV第一季歌词| 亚洲一区二区在线视频| 亚洲精品无码久久| 国产精品福利在线| 狠狠大香蕉| www.青草视频| 久久精品在线播放| 久久久久久久网站| 欧美在线黄色| 日皮做爱视频网站| 91久久久久久久久久久| 特黄一级片| 黑人巨粗进入疼哭A片| 一本色道久久综合无码欧美| 亚洲电影在线观看| 99久久99久久99久久久99国产| 91国啪| 亚洲.无码.制服.日韩.中文字幕| 色婷婷在线无码精品秘人口传媒| 亚洲无码AV电影| 在线不卡免费Av| 日韩激情视频在线观看| 亚洲人妻有码| aa免费视频| 嫩BBB搡BBB搡BBB搡| 日韩av三级在线观看| 插逼免费视频| 亚洲精品视频免费在线观看| 成人肏屄视频| 大鸡巴在线视频| 国产AV无遮挡| 午夜美女福利视频| 青娱乐成人在线| 精品九九九九| 在线无码| 亚洲天堂久久久| 久久偷看各类wc女厕嘘嘘偷窃| 精品四区| 成人在线黄色视频| 色伊人网| 大香蕉伊人综合在线| 岛国av免费看| 99在线视频免费观看| 狠狠躁夜夜躁人人爽人妻| 无码人妻一区二区三区三| 日本成人A片| 91人人人| 九色PORNY国产成人蝌蚪| 亚洲性图第一页| 强伦轩一区二区三区在线观看| 高清AV在线| 天堂一区二区三区| 日韩无码91| 婷婷亚洲精品| 91精品婷婷国产综合久久| 日逼国产| 樱桃码一区二区三区| 天天操欧美| 国产在线视频一区二区| 久久精品福利视频| а√在线中文网新版地址在线| 7x7x7x人成免费观学生视频| 免费色网站| 久久精品熟妇丰满人妻99| 国产中文字幕AV| 91ccc| 国产一卡二卡在线| 亚洲影音| 国产免费黄色视频网站| 国产精品天天狠天天看| 精品国产一区二区三区久久久蜜月| 久久婷婷五月综合| 欧美特黄AAAAAA| 一本到在线视频| 爆乳一区二区| 91少妇精品| jizz丝袜| 色秘乱码一区二区三区唱戏| www.俺去也| 中日韩中文字幕一区二区区别| 波多野结衣一二三区| 超碰人人射| 国产免费一区二区三区网站免费 | 成人精品视频| 人人弄人人| 人人射在线| 波多野结衣成人视频| 中文字幕人成人乱| 国产美女在线播放| 偷拍视频网站| 婷婷综合缴情亚洲另类在线 | 国产av小电影| 丁香五月天AV| 麻豆一级片| 日日爱99| 日本高清不卡视频| 内射学生妹| 亚洲日韩成人AV| 2026国产精品视频| 亚洲激情五月天| 国产精品欧美综合亚洲| 久热激情| 中文av在线播放| 欧美特级AAA| 中文字幕在线免费观看电影| 色片视频| 人妻无码A| 国产精品无码激情| 人人爽夜夜爽| 日韩成人无| 中文字幕免费观看视频| 欧美va| 北条麻妃无码精品AV怎么看 | 久青操| 日本黄色A片免费看| 午夜a片| 特黄AAAAAAAA片视频| 另类欧美| av资源在线播放| 中文字幕网在线| 亚洲尤物| 亚洲无码在线播放| 人妻av一区二区三区| 91熟女乱伦| www.水蜜桃| 翔田千里53歳在线播放| 91三级在线观看| 91精品久久人妻一区二区夜夜夜 | 高清无码毛片| 日韩成人无码精品| 九色国产在线| 国产乱伦不卡| 欧美成人一级片| 3D动漫精品啪啪一区二区下载| 国产精品啪啪啪| 夜夜操夜夜骑| 激情网页| 嘿嘿午夜影院| 国产日本在线| 亚洲情免| 欧美mv日韩mv国产| 黄色视频视频| 调教人妻视频| 亚洲爆乳无码一区二区三区| 玖玖在线视频| 欧美日韩成人网站| 少妇视频一区| 激情AAA| 色色五月天视频| 日韩视频免费在线观看| 亚洲一级一级黄色| 国产精品无码av| 日本人人操人人摸| 另类老妇奶性BBWBBwBBw| 免费A片国产毛无码A片| 影音先锋女人资源| 午夜男人天堂| 久久国产精品视频| 99色婷婷| 97人妻无码一区二区| 超碰997| 毛片三级片| 爆乳一区二区三区AV| 亚洲日韩在线免费观看| 香蕉视频色| 亚洲黑人av|