精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot實現Excel導入導出,好用到爆,POI可以扔掉了!

開發 后端
今天給大家推薦一款非常好用的Excel導入導出工具EasyPoi,希望對大家有所幫助!

[[433269]]

EasyPoi簡介

用慣了SpringBoot的朋友估計會想到,有沒有什么辦法可以直接定義好需要導出的數據對象,然后添加幾個注解,直接自動實現Excel導入導出功能?

EasyPoi正是這么一款工具,如果你不太熟悉POI,想簡單地實現Excel操作,用它就對了!

EasyPoi的目標不是替代POI,而是讓一個不懂導入導出的人也能快速使用POI完成Excel的各種操作,而不是看很多API才可以完成這樣的工作。

集成

在SpringBoot中集成EasyPoi非常簡單,只需添加如下一個依賴即可,真正的開箱即用! 

  1. <dependency>  
  2.     <groupId>cn.afterturn</groupId>  
  3.     <artifactId>easypoi-spring-boot-starter</artifactId>  
  4.     <version>4.4.0</version>  
  5. </dependency> 

使用

接下來介紹下EasyPoi的使用,以會員信息和訂單信息的導入導出為例,分別實現下簡單的單表導出和具有關聯信息的復雜導出。

簡單導出

我們以會員信息列表導出為例,使用EasyPoi來實現下導出功能,看看是不是夠簡單!

  • 首先創建一個會員對象Member,封裝會員信息; 
  1. /**  
  2.  * 購物會員  
  3.  * Created by macro on 2021/10/12.  
  4.  */  
  5. @Data  
  6. @EqualsAndHashCode(callSuper = false 
  7. public class Member {  
  8.     @Excel(name = "ID"width = 10 
  9.     private Long id;  
  10.     @Excel(name = "用戶名"width = 20needMerge = true 
  11.     private String username;  
  12.     private String password;  
  13.     @Excel(name = "昵稱"width = 20needMerge = true 
  14.     private String nickname; 
  15.     @Excel(name = "出生日期"width = 20format = "yyyy-MM-dd" 
  16.     private Date birthday;  
  17.     @Excel(name = "手機號"width = 20needMerge = truedesensitizationRule = "3_4" 
  18.     private String phone;  
  19.     private String icon;  
  20.     @Excel(name = "性別"width = 10replace = {"男_0", "女_1"})  
  21.     private Integer gender;  
  •  在此我們就可以看到EasyPoi的核心注解@Excel,通過在對象上添加@Excel注解,可以將對象信息直接導出到Excel中去,下面對注解中的屬性做個介紹;
    •   name:Excel中的列名;
    •   width:指定列的寬度;
    •   needMerge:是否需要縱向合并單元格;
    •   format:當屬性為時間類型時,設置時間的導出導出格式;
    •   desensitizationRule:數據脫敏處理,3_4表示只顯示字符串的前3位和后4位,其他為*號;
    •   replace:對屬性進行替換;
    •   suffix:對數據添加后綴。
  •  接下來我們在Controller中添加一個接口,用于導出會員列表到Excel,具體代碼如下; 
  1. /**  
  2.  * EasyPoi導入導出測試Controller  
  3.  * Created by macro on 2021/10/12.  
  4.  */  
  5. @Controller  
  6. @Api(tags = "EasyPoiController"description = "EasyPoi導入導出測試" 
  7. @RequestMapping("/easyPoi")  
  8. public class EasyPoiController {  
  9.     @ApiOperation(value = "導出會員列表Excel" 
  10.     @RequestMapping(value = "/exportMemberList"method = RequestMethod.GET)  
  11.     public void exportMemberList(ModelMap map,  
  12.                                  HttpServletRequest request,  
  13.                                  HttpServletResponse response) {  
  14.         List<Member> memberList = LocalJsonUtil.getListFromJson("json/members.json", Member.class);  
  15.         ExportParams params = new ExportParams("會員列表", "會員列表", ExcelType.XSSF);  
  16.         map.put(NormalExcelConstants.DATA_LIST, memberList);  
  17.         map.put(NormalExcelConstants.CLASS, Member.class);  
  18.         map.put(NormalExcelConstants.PARAMS, params);  
  19.         map.put(NormalExcelConstants.FILE_NAME, "memberList");  
  20.         PoiBaseView.render(map, request, response, NormalExcelConstants.EASYPOI_EXCEL_VIEW);  
  21.     }  
  •  LocalJsonUtil工具類,可以直接從resources目錄下獲取JSON數據并轉化為對象,例如此處使用的members.json;

  •  運行項目,直接通過Swagger訪問接口,注意在Swagger中訪問接口無法直接下載,需要點擊返回結果中的下載按鈕才行,訪問地址:http://localhost:8088/swagger-ui/

  •  下載完成后,查看下文件,一個標準的Excel文件已經被導出了。

簡單導入

導入功能實現起來也非常簡單,下面以會員信息列表的導入為例。

  •  在Controller中添加會員信息導入的接口,這里需要注意的是使用@RequestPart注解修飾文件上傳參數,否則在Swagger中就沒法顯示上傳按鈕了; 
  1. /**  
  2.  * EasyPoi導入導出測試Controller  
  3.  * Created by macro on 2021/10/12.  
  4.  */  
  5. @Controller  
  6. @Api(tags = "EasyPoiController"description = "EasyPoi導入導出測試" 
  7. @RequestMapping("/easyPoi")  
  8. public class EasyPoiController {  
  9.     @ApiOperation("從Excel導入會員列表")  
  10.     @RequestMapping(value = "/importMemberList"method = RequestMethod.POST)  
  11.     @ResponseBody  
  12.     public CommonResult importMemberList(@RequestPart("file") MultipartFile file) {  
  13.         ImportParams params = new ImportParams();  
  14.         params.setTitleRows(1);  
  15.         params.setHeadRows(1);  
  16.         try {  
  17.             List<Member> list = ExcelImportUtil.importExcel(  
  18.                     file.getInputStream(),  
  19.                     Member.class, params);  
  20.             return CommonResult.success(list);  
  21.         } catch (Exception e) {  
  22.             e.printStackTrace(); 
  23.             return CommonResult.failed("導入失敗!");  
  24.         }  
  25.     }  
  •  然后在Swagger中測試接口,選擇之前導出的Excel文件即可,導入成功后會返回解析到的數據。

復雜導出

當然EasyPoi也可以實現更加復雜的Excel操作,比如導出一個嵌套了會員信息和商品信息的訂單列表,下面我們來實現下!

  •  首先添加商品對象Product,用于封裝商品信息; 
  1. /**  
  2.  * 商品  
  3.  * Created by macro on 2021/10/12.  
  4.  */  
  5. @Data  
  6. @EqualsAndHashCode(callSuper = false 
  7. public class Product {  
  8.     @Excel(name = "ID"width = 10 
  9.     private Long id;  
  10.     @Excel(name = "商品SN"width = 20 
  11.     private String productSn;  
  12.     @Excel(name = "商品名稱"width = 20 
  13.     private String name;  
  14.     @Excel(name = "商品副標題"width = 30 
  15.     private String subTitle;  
  16.     @Excel(name = "品牌名稱"width = 20 
  17.     private String brandName; 
  18.     @Excel(name = "商品價格"width = 10 
  19.     private BigDecimal price;  
  20.     @Excel(name = "購買數量"width = 10suffix = "件" 
  21.     private Integer count;  
  •  然后添加訂單對象Order,訂單和會員是一對一關系,使用@ExcelEntity注解表示,訂單和商品是一對多關系,使用@ExcelCollection注解表示,Order就是我們需要導出的嵌套訂單數據; 
  1. /**  
  2.  * 訂單  
  3.  * Created by macro on 2021/10/12.  
  4.  */  
  5. @Data  
  6. @EqualsAndHashCode(callSuper = false 
  7. public class Order {  
  8.     @Excel(name = "ID"width = 10,needMerge = true 
  9.     private Long id;  
  10.     @Excel(name = "訂單號"width = 20,needMerge = true 
  11.     private String orderSn; 
  12.     @Excel(name = "創建時間"width = 20format = "yyyy-MM-dd HH:mm:ss",needMerge = true 
  13.     private Date createTime;  
  14.     @Excel(name = "收貨地址"width = 20,needMerge = true )  
  15.     private String receiverAddress;  
  16.     @ExcelEntity(name = "會員信息" 
  17.     private Member member;  
  18.     @ExcelCollection(name = "商品列表" 
  19.     private List<Product> productList;  
  •  接下來在Controller中添加導出訂單列表的接口,由于有些會員信息我們不需要導出,可以調用ExportParams中的setExclusions方法排除掉; 
  1. /**  
  2.  * EasyPoi導入導出測試Controller  
  3.  * Created by macro on 2021/10/12.  
  4.  */  
  5. @Controller 
  6. @Api(tags = "EasyPoiController"description = "EasyPoi導入導出測試" 
  7. @RequestMapping("/easyPoi")  
  8. public class EasyPoiController {  
  9.     @ApiOperation(value = "導出訂單列表Excel" 
  10.     @RequestMapping(value = "/exportOrderList"method = RequestMethod.GET)  
  11.     public void exportOrderList(ModelMap map,  
  12.                                 HttpServletRequest request,  
  13.                                 HttpServletResponse response) {  
  14.         List<Order> orderList = getOrderList(); 
  15.         ExportParams params = new ExportParams("訂單列表", "訂單列表", ExcelType.XSSF);  
  16.         //導出時排除一些字段  
  17.         params.setExclusions(new String[]{"ID", "出生日期", "性別"});  
  18.         map.put(NormalExcelConstants.DATA_LIST, orderList);  
  19.         map.put(NormalExcelConstants.CLASS, Order.class);  
  20.         map.put(NormalExcelConstants.PARAMS, params);  
  21.         map.put(NormalExcelConstants.FILE_NAME, "orderList");  
  22.         PoiBaseView.render(map, request, response, NormalExcelConstants.EASYPOI_EXCEL_VIEW);  
  23.     }  
  •  在Swagger中訪問接口測試,導出訂單列表對應Excel;

  •  下載完成后,查看下文件,EasyPoi導出復雜的Excel也是很簡單的!

自定義處理

如果你想對導出字段進行一些自定義處理,EasyPoi也是支持的,比如在會員信息中,如果用戶沒有設置昵稱,我們添加下暫未設置信息。

  •  我們需要添加一個處理器繼承默認的ExcelDataHandlerDefaultImpl類,然后在exportHandler方法中實現自定義處理邏輯; 
  1. /**  
  2.  * 自定義字段處理  
  3.  * Created by macro on 2021/10/13.  
  4.  */  
  5. public class MemberExcelDataHandler extends ExcelDataHandlerDefaultImpl<Member> {  
  6.   @Override  
  7.   public Object exportHandler(Member obj, String name, Object value) {  
  8.     if("昵稱".equals(name)){  
  9.       String emptyValue = "暫未設置" 
  10.       if(value==null){  
  11.         return super.exportHandler(obj,name,emptyValue);  
  12.       }  
  13.       if(value instanceof String&&StrUtil.isBlank((String) value)){  
  14.         return super.exportHandler(obj,name,emptyValue);  
  15.       }  
  16.     } 
  17.     return super.exportHandler(obj, name, value);  
  18.   }  
  19.   @Override  
  20.   public Object importHandler(Member obj, String name, Object value) {  
  21.     return super.importHandler(obj, name, value);  
  22.   }  
  •  然后修改Controller中的接口,調用MemberExcelDataHandler處理器的setNeedHandlerFields設置需要自定義處理的字段,并調用ExportParams的setDataHandler設置自定義處理器; 
  1. /**  
  2.  * EasyPoi導入導出測試Controller  
  3.  * Created by macro on 2021/10/12.  
  4.  */  
  5. @Controller  
  6. @Api(tags = "EasyPoiController"description = "EasyPoi導入導出測試" 
  7. @RequestMapping("/easyPoi")  
  8. public class EasyPoiController {  
  9.     @ApiOperation(value = "導出會員列表Excel" 
  10.     @RequestMapping(value = "/exportMemberList"method = RequestMethod.GET)  
  11.     public void exportMemberList(ModelMap map,  
  12.                                  HttpServletRequest request,  
  13.                                  HttpServletResponse response) {  
  14.         List<Member> memberList = LocalJsonUtil.getListFromJson("json/members.json", Member.class);  
  15.         ExportParams params = new ExportParams("會員列表", "會員列表", ExcelType.XSSF);  
  16.         //對導出結果進行自定義處理  
  17.         MemberExcelDataHandler handler = new MemberExcelDataHandler();  
  18.         handler.setNeedHandlerFields(new String[]{"昵稱"});  
  19.         params.setDataHandler(handler);  
  20.         map.put(NormalExcelConstants.DATA_LIST, memberList); 
  21.         map.put(NormalExcelConstants.CLASS, Member.class);  
  22.         map.put(NormalExcelConstants.PARAMS, params);  
  23.         map.put(NormalExcelConstants.FILE_NAME, "memberList");  
  24.         PoiBaseView.render(map, request, response, NormalExcelConstants.EASYPOI_EXCEL_VIEW);  
  25.     }  
  •  再次調用導出接口,我們可以發現昵稱已經添加默認設置了。

總結

體驗了一波EasyPoi,它使用注解來操作Excel的方式確實非常好用。如果你想生成更為復雜的Excel的話,可以考慮下它的模板功能。 

 

責任編輯:龐桂玉 來源: Java編程
相關推薦

2020-10-24 13:30:32

Java代碼數據類型

2022-04-12 08:43:21

Python內置模塊

2022-07-17 11:45:39

微服務架構

2021-11-15 10:02:16

Python命令技巧

2023-04-26 00:34:36

Python技巧程序員

2022-02-24 10:48:01

Pycharm插件

2024-07-19 10:31:15

2025-02-14 09:30:42

2021-11-26 10:36:36

瀏覽器插件谷歌

2019-11-24 23:12:30

Vim插件編輯器編程語言

2022-01-26 07:42:13

SpringBoot性能系統

2021-03-11 08:24:48

Javapoi數據脫敏

2012-02-22 09:44:21

Java

2022-12-29 08:49:40

SpringBootExcel

2019-08-02 14:45:22

阿里Java命令

2015-09-17 11:33:09

2017-08-16 17:00:19

2022-08-01 07:02:06

SpringEasyExcel場景

2021-07-16 16:47:40

命令行工具開源

2022-08-03 15:18:41

StopWatch代碼
點贊
收藏

51CTO技術棧公眾號

成人xxxxx| 亚洲美女免费精品视频在线观看| 自拍偷拍亚洲色图欧美| 国产喷水福利在线视频| 激情久久久久久| 亚洲精品有码在线| 日本中文字幕影院| а√天堂资源官网在线资源| 久久久噜噜噜久噜久久综合| 91在线免费观看网站| 久久久久久久久久久久久久av| 精品一二三区| 精品久久国产字幕高潮| 北条麻妃在线一区| 国产激情在线| 97精品久久久久中文字幕 | 日韩中文字幕av电影| 久久精品视频亚洲| 国产全是老熟女太爽了| 欧美成人精品一级| 在线观看av一区二区| 亚洲色成人www永久在线观看 | 成人444kkkk在线观看| 最新在线黄色网址| 免费观看亚洲视频大全| 91成人在线观看喷潮| 国产乱人伦精品一区二区三区| 国产一区精品| 99久久精品久久久久久清纯| 91视频免费在线| 波多野结衣啪啪| 亚洲经典在线| 欧美激情xxxx性bbbb| 国产亚洲精品精品精品| 亚洲精品推荐| 亚洲精美色品网站| 亚洲熟女一区二区三区| 日韩一级特黄| 欧美色综合网站| 亚洲国产精品久久久久爰色欲| 性国产高清在线观看| 国产精品的网站| 天天好比中文综合网| 麻豆影视在线| 26uuu另类欧美| 国产欧美日韩一区| 亚洲精品视频91| 国产精品综合二区| 91在线观看免费网站| 97caocao| 国产一区二区中文字幕| 国产精品自拍偷拍| 亚洲天堂狠狠干| 日韩av电影免费观看高清完整版| 国产69精品久久久久久| 粉嫩aⅴ一区二区三区| 在线日韩视频| 性欧美xxxx交| 三级黄色在线视频| 国产精品美女| 国产成人自拍视频在线观看| 麻豆成人免费视频| 日韩精品1区2区3区| 国产精品久久久久久久久久| 一级特黄免费视频| 蜜桃av一区二区三区电影| 国产裸体写真av一区二区| 中文字幕视频在线播放| 免费人成黄页网站在线一区二区| 国产精品色婷婷视频| 中文字幕在线播放不卡| 韩国午夜理伦三级不卡影院| 亚洲aa在线观看| www.国产黄色| a级精品国产片在线观看| 久久精品成人一区二区三区蜜臀| 黄色大片在线免费观看| 国产欧美日本一区视频| 最新中文字幕久久| 男人天堂亚洲| 色呦呦一区二区三区| 欧美成人黄色网址| 麻豆视频久久| 日韩电影第一页| 亚洲天堂精品一区| 欧美freesex交免费视频| 久久久久免费视频| 亚洲综合久久网| 黄色资源网久久资源365| 国产91社区| 黄色av免费在线看| 曰韩精品一区二区| 国产美女无遮挡网站| 懂色aⅴ精品一区二区三区| 欧美一区二区二区| 天堂久久久久久| 99久久夜色精品国产亚洲1000部| 欧美精品xxx| 中文字幕在线观看欧美| 国产精品羞羞答答xxdd| 欧美日韩在线高清| 男女视频在线| 欧美美女视频在线观看| 中国极品少妇videossexhd | 九九久久九九久久| 青青青免费在线视频| 欧美精品色综合| 久久国产精品无码一级毛片| 成人系列视频| 97视频人免费观看| 国产日韩一级片| 国产亚洲人成网站| 日韩精品在线视频免费观看| 成人一区视频| 日韩精品高清在线| 午夜写真片福利电影网| 日本不卡在线视频| 免费观看成人高| 日本乱理伦在线| 欧美日韩中文精品| 瑟瑟视频在线观看| 最新日韩欧美| 99中文视频在线| 午夜免费播放观看在线视频| 日韩欧美在线视频日韩欧美在线视频 | 污视频网站在线免费| 欧美亚洲国产怡红院影院| 老熟妇精品一区二区三区| 国产精品伦理久久久久久| 人妖精品videosex性欧美| 色综合视频在线| 一区二区三区**美女毛片| 五月婷婷之婷婷| 欧洲乱码伦视频免费| 欧美在线视频a| 天堂网在线中文| 亚洲成人动漫一区| 日本中文字幕有码| 91国语精品自产拍| 成人看片人aa| 欧美激情午夜| 在线不卡免费欧美| 日韩精品123区| 久久99精品国产.久久久久 | 不卡一区二区在线观看| 亚洲全部视频| 国产精品一区二区av| 午夜小视频福利在线观看| 91精品国产综合久久久久| 糖心vlog免费在线观看| 国内精品视频666| 国产精品久久成人免费观看| 午夜精品久久久久久毛片| 日韩在线观看免费av| 91国产免费视频| 中文字幕亚洲视频| 国内自拍第二页| 亚洲欧美综合国产精品一区| 91视频99| www成人免费观看| 亚洲精品wwww| 亚洲图片在线视频| 国产精品天天摸av网| 国产精品v日韩精品v在线观看| 欧洲激情视频| 成人在线激情视频| 免费污视频在线| 日韩久久精品电影| 最新中文字幕第一页| 国产精品美女www爽爽爽| 99中文字幕在线| 影音国产精品| 日本一区二区三区视频在线播放 | 亚洲另类自拍| 日本视频一区二区在线观看| 福利一区二区| 欧美激情二区三区| 欧美美女搞黄| 欧美精品色综合| 日韩女优在线观看| 久久久777精品电影网影网 | 亚洲中文无码av在线| 18涩涩午夜精品.www| 香蕉视频污视频| 日韩一区欧美二区| 麻豆视频传媒入口| 色橹橹欧美在线观看视频高清| 国产精品草莓在线免费观看 | 永久免费黄色片| 日韩视频久久| 亚洲在线视频一区二区| 伊人久久影院| 国产精品美女午夜av| 欧美人与牲禽动交com | 日韩欧美成人一区二区| 日本特级黄色片| 亚洲人成网站色在线观看| 大尺度做爰床戏呻吟舒畅| 免费的国产精品| 人人干视频在线| 香蕉精品视频在线观看| 久久er99热精品一区二区三区| 久久91视频| 午夜精品久久久久久久99热| 尤物视频在线免费观看| 亚洲黄色成人网| 国产丝袜视频在线观看| 一本到一区二区三区| 久久免费视频6| 中文字幕精品三区| 五月婷婷综合在线观看| 国产成人亚洲综合a∨婷婷 | 久久久久久91亚洲精品中文字幕| 国产精品进线69影院| 国产ts丝袜人妖系列视频| 国产乱码一区二区三区| 中文字幕国产传媒| 亚洲影音先锋| 免费看国产曰批40分钟| 91成人国产| 午夜精品电影在线观看| 久久精品色综合| 999国产视频| 日韩国产一二三区| 国产精品青青在线观看爽香蕉| 成人一级福利| 久久久久久免费精品| 丝袜美女在线观看| 久久躁狠狠躁夜夜爽| 99免在线观看免费视频高清| 亚洲精品网址在线观看| 深夜福利视频网站| 精品国偷自产国产一区| www.超碰在线.com| 日韩亚洲国产中文字幕欧美| 国产麻豆91视频| 91.麻豆视频| 国产又粗又长又大视频| 欧美日韩日日摸| 国产男人搡女人免费视频| 色婷婷狠狠综合| 中文字幕黄色片| 色爱区综合激月婷婷| 精品欧美一区二区三区免费观看| 亚洲一二三四区| 久久综合色综合| 亚洲五月六月丁香激情| www.av视频在线观看| 亚洲va欧美va人人爽午夜| 日韩av一二三区| 欧美日韩国产丝袜美女| 91丝袜一区二区三区| 色婷婷亚洲精品| 超碰在线97观看| 欧美午夜在线一二页| 一级片视频网站| 欧美精品第1页| www.国产麻豆| 日韩精品免费视频| 久热av在线| 色婷婷综合成人av| bestiality新另类大全| 欧美国产日韩一区二区在线观看| 免费男女羞羞的视频网站在线观看| 欧美激情免费看| 九色porny自拍视频在线观看 | crdy在线观看欧美| 444亚洲人体| 噜噜噜天天躁狠狠躁夜夜精品| 精品日韩欧美| 精品国产视频| 特大黑人娇小亚洲女mp4| 黄色成人av网站| 精品视频一区二区在线| 久久国产精品99精品国产| 亚洲欧美日韩网站| 成人精品视频一区二区三区尤物| aaaaa一级片| 中文字幕一区二区三区色视频| 九九热视频精品| 欧美性生交xxxxxdddd| 中文字幕久久熟女蜜桃| 日韩女同互慰一区二区| 欧美一区二区少妇| 久久精品久久久久久| 国产极品在线观看| 国产精品免费观看在线| 中文在线综合| 日韩国产在线一区| 欧美三级小说| 日本成人在线免费视频| 国产精品一级黄| av男人的天堂av| 亚洲一区二区在线免费观看视频| 欧美日韩国产成人| 亚洲午夜激情视频| 精品国产99国产精品| h视频网站在线观看| 欧美国产日韩一区二区| 日韩一区二区三区在线免费观看| 成人一区二区电影| 免费久久精品| 丁香色欲久久久久久综合网| 日韩精品欧美精品| 亚洲成人精品在线播放| 欧美国产精品中文字幕| 国产大片中文字幕| 欧美精品一级二级三级| 午夜成人免费影院| 久久久久www| 新片速递亚洲合集欧美合集| 成人片在线免费看| 欧美岛国激情| 精品久久久久久久无码| 国产aⅴ精品一区二区三区色成熟| 娇妻被老王脔到高潮失禁视频| 亚洲成人tv网| 精品国产999久久久免费| 在线观看视频亚洲| 欧美91看片特黄aaaa| 国产一区二区精品在线| 亚洲欧美日韩高清在线| 国产又猛又黄的视频| 久久久久九九视频| 日本黄色片视频| 亚洲成人免费网站| 69xxx在线| 91久久精品视频| 日韩欧美伦理| 黄色aaa级片| 国产午夜精品久久久久久久 | 日韩激情一二三区| 久久久久9999| 亚洲国产美国国产综合一区二区| 国产免费一区二区三区免费视频| 亚洲性夜色噜噜噜7777| 这里有精品可以观看| 国产一区二区三区av在线| 黄色亚洲在线| 中文字幕在线观看91| 一区二区三区四区中文字幕| 99久久久国产精品无码免费| 久久精品亚洲热| 日韩五码电影| 在线无限看免费粉色视频| 激情文学综合丁香| 国产探花在线免费观看| 日韩一区二区三区电影在线观看| 精精国产xxxx视频在线| 国产日韩视频在线观看| 久久国产小视频| 999久久久精品视频| 日韩美女啊v在线免费观看| 国产乱淫av片免费| 欧美日韩第一页| 国产精品毛片久久久| 日韩xxxx视频| 久久久亚洲精品一区二区三区| 国产精品suv一区| 色黄久久久久久| 国产不卡精品在线| 日韩一区二区三区在线观看| 免费看一级视频| 在线日韩av观看| 国产午夜久久av| 99色这里只有精品| 久久综合色8888| 中文字幕在线2018| 欧美区二区三区| 欧美一区二区三区久久| 又色又爽又高潮免费视频国产| 国产精品三级在线观看| 国产男女裸体做爰爽爽| 久久人人爽人人| 国产精品一国产精品| 亚洲美女性囗交| 亚洲国产成人av网| 久热av在线| 91影视免费在线观看| 99人久久精品视频最新地址| 色综合99久久久无码国产精品| 欧美精品在欧美一区二区少妇| 国产蜜臀在线| 日韩欧美亚洲在线| 国产成人免费在线视频| 免费在线不卡视频| 日韩中文娱乐网| 久久午夜影院| www.超碰97.com| 亚洲国产日韩综合久久精品| 国产综合在线观看| 91视频免费在线观看| 视频一区二区中文字幕| 动漫性做爰视频| 亚洲毛片一区二区| 国产不卡精品在线| 日本熟妇人妻中出| 亚洲午夜在线视频| h视频在线免费| 精品在线不卡|