久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Springboot實現導入導出Excel的方法

瀏覽:158日期:2022-06-15 18:06:40
目錄一、添加poi的maven依賴二、自定義注解(Excel屬性標題、位置等)三、CustomExcelUtils編寫四、定義導出實體類五、Controller層代碼編寫一、添加poi的maven依賴

<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.13</version></dependency><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.13</version></dependency>二、自定義注解(Excel屬性標題、位置等)

package com.cloud.core.annotation;import java.lang.annotation.*;/** * 自定義實體類所需要的bean(Excel屬性標題、位置等) * Copyright: Copyright (C) 2021 DLANGEL, Inc. All rights reserved. * Company: 大連安琪科技有限公司 * * @author Rex * @since 2021/5/19 9:30 */@Target({ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface ExcelColumn { /** * Excel標題 * * @return * @author Rex */ String value() default ''; /** * Excel從左往右排列位置,第一個是0 * * @return * @author Rex */ int col() default 0;}三、CustomExcelUtils編寫

package com.cloud.core.utils;import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;import com.cloud.core.annotation.ExcelColumn;import com.cloud.core.common.CommonConst;import org.apache.commons.lang.BooleanUtils;import org.apache.commons.lang.CharUtils;import org.apache.commons.lang.StringUtils;import org.apache.commons.lang.math.NumberUtils;import org.apache.poi.hssf.usermodel.HSSFDateUtil;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.http.MediaType;import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletResponse;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.math.BigDecimal;import java.net.URLEncoder;import java.util.*;import java.util.concurrent.atomic.AtomicInteger;import java.util.stream.Collectors;import java.util.stream.Stream;/** * 自定義導入導出Excel文件類 * Copyright: Copyright (C) 2021 DLANGEL, Inc. All rights reserved. * Company: 大連安琪科技有限公司 * * @author Rex * @since 2021/5/19 9:31 */public class CustomExcelUtils { private final static Logger log = LoggerFactory.getLogger(CustomExcelUtils.class); private final static String EXCEL2003 = 'xls'; private final static String EXCEL2007 = 'xlsx'; /** * 讀取Excel * * @param path 為了測試文件用,實際為空 * @param cls 類 * @param startRow 起始行 * @param file 文件 * @return * @author Rex */ public static <T> List<T> readExcel(String path, Class<T> cls, int startRow, MultipartFile file) {String fileName = file.getOriginalFilename();if (!fileName.matches(CommonConst.Regex.FILE_EXT_XLS) && !fileName.matches(CommonConst.Regex.FILE_EXT_XLSX)) { log.error('上傳文件格式不正確');}List<T> dataList = new ArrayList<>();Workbook workbook = null;try { InputStream is = file.getInputStream(); if (fileName.endsWith(EXCEL2007)) {//FileInputStream is = new FileInputStream(new File(path));workbook = new XSSFWorkbook(is); } if (fileName.endsWith(EXCEL2003)) {//FileInputStream is = new FileInputStream(new File(path));workbook = new HSSFWorkbook(is); } if (workbook != null) {//類映射 注解 value-->bean columnsMap<String, List<Field>> classMap = new HashMap<>();List<Field> fields = Stream.of(cls.getDeclaredFields()).collect(Collectors.toList());fields.forEach(field -> { ExcelColumn annotation = field.getAnnotation(ExcelColumn.class); if (annotation != null) {String value = annotation.value();if (StringUtils.isBlank(value)) { // return起到的作用和continue是相同的 語法 return;}if (!classMap.containsKey(value)) { classMap.put(value, new ArrayList<>());}field.setAccessible(true);classMap.get(value).add(field); }});//索引-->columnsMap<Integer, List<Field>> reflectionMap = new HashMap<>(16);//默認讀取第一個sheetSheet sheet = workbook.getSheetAt(0);boolean firstRow = true;for (int i = startRow; i <= sheet.getLastRowNum(); i++) { Row row = sheet.getRow(i); // 提取注解 if (firstRow) {for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) { Cell cell = row.getCell(j); String cellValue = getCellValue(cell); if (classMap.containsKey(cellValue)) {reflectionMap.put(j, classMap.get(cellValue)); }}if (reflectionMap.size() > 0) { firstRow = false;} } else {//忽略空白行if (row == null) { continue;}try { T t = cls.newInstance(); //判斷是否為空白行 boolean allBlank = true; for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {if (reflectionMap.containsKey(j)) { Cell cell = row.getCell(j); String cellValue = getCellValue(cell); if (StringUtils.isNotBlank(cellValue)) {allBlank = false; } List<Field> fieldList = reflectionMap.get(j); fieldList.forEach( x -> {try {handleField(t, cellValue, x);} catch (Exception e) {log.error(String.format('reflect field:%s value:%s exception!', x.getName(), cellValue), e);} } );} } if (!allBlank) {dataList.add(t); } else {log.warn(String.format('row:%s is blank ignore!', i)); }} catch (Exception e) { log.error(String.format('parse row:%s exception!', i), e);} }} }} catch (Exception e) { log.error(String.format('parse excel exception!'), e);} finally { if (workbook != null) {try { workbook.close();} catch (Exception e) { log.error(String.format('parse excel exception!'), e);} }}return dataList; } private static <T> void handleField(T t, String value, Field field) throws Exception {Class<?> type = field.getType();if (type == null || type == void.class || StringUtils.isBlank(value)) { return;}if (type == Object.class) { field.set(t, value); //數字類型} else if (type.getSuperclass() == null || type.getSuperclass() == Number.class) { if (type == int.class || type == Integer.class) {field.set(t, NumberUtils.toInt(value)); } else if (type == long.class || type == Long.class) {field.set(t, NumberUtils.toLong(value)); } else if (type == byte.class || type == Byte.class) {field.set(t, NumberUtils.toByte(value)); } else if (type == short.class || type == Short.class) {field.set(t, NumberUtils.toShort(value)); } else if (type == double.class || type == Double.class) {field.set(t, NumberUtils.toDouble(value)); } else if (type == float.class || type == Float.class) {field.set(t, NumberUtils.toFloat(value)); } else if (type == char.class || type == Character.class) {field.set(t, CharUtils.toChar(value)); } else if (type == boolean.class) {field.set(t, BooleanUtils.toBoolean(value)); } else if (type == BigDecimal.class) {field.set(t, new BigDecimal(value)); }} else if (type == Boolean.class) { field.set(t, BooleanUtils.toBoolean(value));} else if (type == Date.class) { // field.set(t, value);} else if (type == String.class) { field.set(t, value);} else { Constructor<?> constructor = type.getConstructor(String.class); field.set(t, constructor.newInstance(value));} } private static String getCellValue(Cell cell) {if (cell == null) { return '';}if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) { if (HSSFDateUtil.isCellDateFormatted(cell)) {return HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toString(); } else {return new BigDecimal(cell.getNumericCellValue()).toString(); }} else if (cell.getCellType() == Cell.CELL_TYPE_STRING) { return StringUtils.trimToEmpty(cell.getStringCellValue());} else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) { return StringUtils.trimToEmpty(cell.getCellFormula());} else if (cell.getCellType() == Cell.CELL_TYPE_BLANK) { return '';} else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) { return String.valueOf(cell.getBooleanCellValue());} else if (cell.getCellType() == Cell.CELL_TYPE_ERROR) { return 'ERROR';} else { return cell.toString().trim();} } public static <T> void writeExcel(HttpServletResponse response, List<T> dataList, Class<T> cls) {Field[] fields = cls.getDeclaredFields();List<Field> fieldList = Arrays.stream(fields).filter(field -> { ExcelColumn annotation = field.getAnnotation(ExcelColumn.class); if (annotation != null && annotation.col() > 0) {field.setAccessible(true);return true; } return false;}).sorted(Comparator.comparing(field -> { int col = 0; ExcelColumn annotation = field.getAnnotation(ExcelColumn.class); if (annotation != null) {col = annotation.col(); } return col;})).collect(Collectors.toList());Workbook wb = new XSSFWorkbook();Sheet sheet = wb.createSheet('Sheet1');AtomicInteger ai = new AtomicInteger();{ Row row = sheet.createRow(ai.getAndIncrement()); AtomicInteger aj = new AtomicInteger(); //寫入頭部 fieldList.forEach(field -> {ExcelColumn annotation = field.getAnnotation(ExcelColumn.class);String columnName = '';if (annotation != null) { columnName = annotation.value();}Cell cell = row.createCell(aj.getAndIncrement());CellStyle cellStyle = wb.createCellStyle();cellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);cellStyle.setAlignment(CellStyle.ALIGN_CENTER);Font font = wb.createFont();font.setBoldweight(Font.BOLDWEIGHT_NORMAL);cellStyle.setFont(font);cell.setCellStyle(cellStyle);cell.setCellValue(columnName); });}if (CollectionUtils.isNotEmpty(dataList)) { dataList.forEach(t -> {Row row1 = sheet.createRow(ai.getAndIncrement());AtomicInteger aj = new AtomicInteger();fieldList.forEach(field -> { Class<?> type = field.getType(); Object value = ''; try {value = field.get(t); } catch (Exception e) {e.printStackTrace(); } Cell cell = row1.createCell(aj.getAndIncrement()); if (value != null) {if (type == Date.class) { cell.setCellValue(value.toString());} else { cell.setCellValue(value.toString());}cell.setCellValue(value.toString()); }}); });}//凍結窗格wb.getSheet('Sheet1').createFreezePane(0, 1, 0, 1);//瀏覽器下載excelbuildExcelDocument('導出數據.xlsx', wb, response);//生成excel文件//buildExcelFile('.default.xlsx', wb); } /** * 瀏覽器下載excel * * @param fileName * @param wb * @param response */ private static void buildExcelDocument(String fileName, Workbook wb, HttpServletResponse response) {try { response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); response.setHeader('Content-Disposition', 'attachment;filename=' + URLEncoder.encode(fileName, 'utf-8')); response.flushBuffer(); wb.write(response.getOutputStream());} catch (IOException e) { e.printStackTrace();} } /** * 生成excel文件 * * @param path 生成excel路徑 * @param wb */ private static void buildExcelFile(String path, Workbook wb) {File file = new File(path);if (file.exists()) { file.delete();}try { wb.write(new FileOutputStream(file));} catch (Exception e) { e.printStackTrace();} }}四、定義導出實體類

主要是使用這里的@ExcelColumn注解,其中的col從0開始的。

package com.cloud.library.model.role;import com.cloud.core.annotation.ExcelColumn;import lombok.Data;/** * 導入角色用 * Copyright: Copyright (C) 2021 DLANGEL, Inc. All rights reserved. * Company: 大連安琪科技有限公司 * * @author Rex * @since 2021/5/19 16:13 */@Datapublic class SysRoleExcel { @ExcelColumn(value = '姓名', col = 1) private String name; @ExcelColumn(value = '描述', col = 2) private String description;}

Excel對應的模板參考

Springboot實現導入導出Excel的方法

五、Controller層代碼編寫

//region 導入數據 /** * 導入數據 * * @param file * @return * @author Rex */ @RequestMapping(value = '/readExcel', method = RequestMethod.POST) public void readExcel(@RequestParam(value = 'uploadFile', required = false) MultipartFile file) {List<SysRoleExcel> list = CustomExcelUtils.readExcel('', SysRoleExcel.class, 0, file);List<SysRole> sysRoleList = new ArrayList<>();list.forEach(e -> { SysRole sysRole = new SysRole(); BeanUtils.copyProperties(e, sysRole); sysRoleList.add(sysRole);});sysRoleService.saveBatch(sysRoleList); } // endregion

這里發現了,這個saveBatch可以直接使用雪花的id來保存數據,因為這里用的是mybatis-plus,單條數據保存使用的是它的配置。然后試了下,批量導入也是可以的,另外,這個批量保存,理論上沒有條數限制,這個還等待后續測試。

到此這篇關于Springboot實現導入導出Excel的方法的文章就介紹到這了,更多相關Springboot導入導出Excel內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: excel
相關文章:
主站蜘蛛池模板: 日韩中字在线观看 | 中文字幕一区二区三区不卡 | 久草天堂 | 亚洲 成人 av| 日韩手机电影 | 国产精品毛片一区二区在线看 | 国产精品一区二区精品 | 欧美日韩精品网站 | 亚洲精品视频在线播放 | 最新av中文字幕 | 欧美精品日韩 | 日韩最新网址 | 亚洲人成人一区二区在线观看 | 国精产品一区二区三区黑人免费看 | 亚洲欧洲精品一区二区 | 欧美二区精品 | 日本三级欧美三级 | 成人在线播放 | 久久精品国产一区二区三 | 国产日韩91 | av片在线观看网站 | 成人久久久精品国产乱码一区二区 | 久久精品免费看 | 国产精品久久一区二区三区 | 成人在线视频一区 | 中文字幕日韩专区 | 狠狠艹av| 91精品在线观看入口 | 成人二区 | 精品无码久久久久久国产 | 日韩精品一二三区 | 国产精品久久久久久婷婷天堂 | 久久国 | 欧美精品1区2区3区 国产女无套免费网站 | 欧美片网站免费 | 黄色大片在线 | 欧美成年黄网站色视频 | 国产一二三视频 | 亚洲在线 | 超碰人人99 | 亚洲第一免费视频网站 | av一区在线观看 | 国产精品久久一区 | 国产精品第一国产精品 | 成人高清网站 | 亚洲每日更新 | 日韩在线观看高清 | 欧美黄视频在线观看 | 亚洲综合区 | 91色在线观看 | 操夜夜| 国产精品无码久久久久 | 国产精品久久久久久久久久10秀 | 国产在线观看一区 | 欧美日韩激情在线 | 久久精品国产77777蜜臀 | 欧美日韩福利 | www.久久99 | 久久99精品国产麻豆婷婷洗澡 | 天堂一区 | 日韩在线视频一区 | 亚洲一区二区视频在线播放 | 国产三级精品在线 | 亚洲午夜精品视频 | 污视频在线免费观看 | 国产三区四区 | 色天天综合网 | 午夜久久乐 | 日韩成人在线一区 | 91精品国产92 | 精品一区二区三区中文字幕 | 成人在线播放网站 | 亚洲小视频网站 | 色资源站 | 羞羞视频网站在线看 | 国产精品极品美女在线观看免费 | 久久另类ts人妖一区二区 | 色综合久久网 | 日韩欧美在线一区二区 | 夜操 | 国产精品一区久久久久 | 中文字幕一区二区三区四区 | 黄av在线 | 亚洲国产精品人人爽夜夜爽 | 欧美日韩综合在线 | 国产一区二区三区久久久久久久久 | 欧美亚洲日本 | 国产一级一级国产 | 国产精品久久久久久久久久免费看 | 国产精品一区二区视频 | 亚洲精品国产综合 | 欧美男人的天堂 | 欧美日韩午夜精品 | 亚洲美女av在线 | 日韩精品视频在线 | 久久精品小视频 | 免费毛片网 | 免费国产一区二区 | 人人做人人澡人人爽欧美 | 久久久久黄 | 男人天堂99 | 久久久久一区二区三区 | 日本久久久久久久久久久久 | 亚洲精品v | av在线免费网址 | 精品国产一区二区国模嫣然 | 久久99久久98精品免观看软件 | 蜜月久综合久久综合国产 | 国产精品色婷婷久久58 | 亚洲福利社区 | 99久久精品免费 | 久久精品一 | 丁香在线| 99精品全国免费观看视频软件 | 69av片| 国产精品久久嫩一区二区免费 | 爱干在线 | 欧美性一区二区三区 | 亚洲高清免费视频 | 欧美日韩亚洲一区 | 国产精品久久久久久久美男 | 草樱av | 99久久免费观看 | 在线播放一级片 | 日本高清视频网站 | 三级在线观看 | 成人精品网站在线观看 | 日韩视频一区 | 日韩欧美精品在线 | 五月激情天 | 欧美精品免费在线观看 | 日韩欧美国产一区二区三区 | 国产精品九九九 | 中文在线一区二区 | 最近免费中文字幕大全免费版视频 | 一本一道久久a久久精品逆3p | 综合网视频| 久视频在线观看 | 久久男人天堂 | 91视频免费网站 | 91精品久久久久久久久 | 91av免费 | 国产欧美中文字幕 | 91看片淫黄大片一级在线观看 | 国精品产品区三区 | 日韩国产一区二区 | 国产黄色在线观看 | 亚洲国产精品成人 | 精品久久av | 亚洲精品久久久久久国产精华液 | 草草视频免费 | 一区福利视频 | 亚洲a网 | 一区二区三区精品视频 | 国产欧美一区二区精品忘忧草 | 黄色一级毛片 | 日韩午夜电影在线观看 | 日韩精品一区二区三区免费观看视频 | 91精品久久| 中文字幕高清av | 狠狠av | 97伦理网 | 国产视频中文字幕 | 亚洲综合精品久久 | 黄色一级视频 | 欧美亚洲国产日韩 | 国产免费一区二区三区 | 久草精品视频在线播放 | 亚洲一区二区黄 | 亚洲精品视频免费看 | avhd101在线成人播放 | 国产精品国产三级国产aⅴ中文 | 久久视频一区 | 中国一级毛片免费 | 国产综合视频在线观看 | 欧美在线国产 | 精品一区二区三区免费毛片 | 久久精品欧美一区二区三区不卡 | 欧美日韩一二三区 | 天天操操 | av在线免费播放 | 免费黄色毛片视频 | 美女扒开内裤让男人桶 | 成人亚洲视频 | 欧美一级播放 | 国产精品高潮呻吟 | 卡通动漫第一页 | av一区二区三区四区 | 综合久久综合久久 | 91综合网 | 亚洲一区二区三区免费 | 久久麻豆 | 日韩免费在线观看视频 | 国产在线一二三区 | 亚洲高清在线 | 一区二区福利 | 一区二区三区在线观看免费 | 欧美在线一级 | 免费操片| 操人在线观看 | 视频二区在线观看 | 一区二区在线看 | 99在线视频播放 | 国产亚洲欧美在线 | 91精品综合久久久久久五月天 | 久久久久久久一区 | 亚洲精品美女久久久 | 亚洲视频在线观看免费 | 欧美激情在线精品一区二区三区 | 成年人黄色一级毛片 | 欧美日韩亚洲二区 | 在线欧美亚洲 | 久久免费视频网 | www伊人| 色综合天天综合网国产成人网 | www一区二区 | 午夜日韩 | 欧美理论片在线观看 | 欧美在线视频一区 | 国产精品国产自产拍高清 | 一道本一区| 久久精品一区二区三区四区毛片 | 日韩欧美国产精品综合嫩v 高清av网站 | 69久久99精品久久久久婷婷 | 91精品国产日韩91久久久久久 | 一区二区精品 | 午夜精品网站 | 久久99这里只有精品 | 日韩色在线 | 一级免费片 | 亚洲天堂一区二区 | 人人射人人插 | 亚洲精品在线视频 | 欧美嘿咻| 亚洲色图p | 大香一网 | 亚洲成人av在线 | 色综合久久久久综合99 | 性色av一二三杏吧传媒 | 成人高清视频在线观看 | 久久久999精品视频 99国产精品久久久久久久 | 欧美激情在线精品一区二区三区 | 欧美顶级毛片在线播放 | 亚洲综合欧美 | 新疆少妇videos高潮 | 美女黄网| 久久国产一区二区三区 | 亚洲三区在线观看 | 欧美日韩成人在线 | 国产真实乱全部视频 | 精品国产九九 | 中文字幕亚洲一区 | 中文字幕 亚洲一区 | 亚洲人成在线观看 | 久久久国产精品视频 | 国产一级免费视频 | 欧美日韩在线视频观看 | 中文字幕一区二区在线观看 | 视频专区一区二区 | 9色porny自拍视频一区二区 | 毛片搜索 | 国产成人精品亚洲日本在线观看 | 国产中文字幕一区 | 99久久久精品 | 欧美日韩一区二区在线 | 亚洲va中文字幕 | 成人免毛片 | www.国产在线| 懂色中文一区二区在线播放 | 一区二区三区久久 | 欧美日韩在线免费观看 | 成人二区 | 国产精品18久久久久久久久 | 亚洲国产精品一区 | www.日韩 | 欧美日韩一区在线 | 日韩国产精品一区二区 | 精品视频在线观看 | 人人爽在线观看 | 精品视频成人 | 黄色欧美一级片 | 欧美精品99 | 亚洲欧美国产精品专区久久 | 久草新免费 | 午夜激情视频在线观看 | 国产1级片 | 国产精品美女www爽爽爽软件 | 成人免费久久 | 一区二区三区国产 | 视频一区二区国产 | 亚洲激情一区二区 | 久热精品视频 | 久久福利| 欧美久久精品 | 成人av免费 | 精品自拍视频 | 人人射人人舔 | 91hd精品少妇 | 亚洲一区中文 | 日韩成人不卡 | 久久中文字幕一区二区 | 欧美成人精品激情在线观看 | www.成人在线视频 | 天天草狠狠干 | 精品久久久久国产免费 | 免费视频一区二区 | 久久国产一区 | 国内精品亚洲 | 欧美一区精品 | 91久久精品一区二区二区 | 久久国产精品无码网站 | 日韩视频在线观看视频 | 久久久久黄 | 午夜精品一区二区三区在线观看 | 97久久精品午夜一区二区 | a在线看 | 91免费国产 | 亚洲综合网站 | av成人免费在线观看 | 精品成人| 91精品视频在线播放 | 亚洲乱码一区二区三区在线观看 | 成人黄色在线视频 | 97伦理片 | 国产一区二区久久 | 欧美午夜精品久久久 | 亚洲狠狠久久综合一区77777 | 国产999精品久久久久久麻豆 | 国产精品一区二区三区av | 国产成人精品一区二区三区网站观看 | 日韩在线一区二区 | 亚洲综合精品在线 | 国产高清精品一区二区三区 | 亚洲欧美综合乱码精品成人网 | 91免费在线视频 | 97操视频| 亚洲人人 | 影音先锋中文字幕在线 | 国产精品欧美一区二区三区 | 狠狠视频 | 亚洲+变态+欧美+另类+精品 | 91偷拍精品一区二区三区 | 91精品国产综合久久国产大片 | 久久精品91 | 热久久这里只有精品 | 中文字幕日韩欧美一区二区三区 | 国产人妖在线 | 伊人免费视频 | 亚洲一区中文 | 一级片免费视频 | www.亚洲区| 亚洲视频在线看 | 91精品麻豆日日躁夜夜躁 | 精精国产 | 久久亚洲黄色 | 五月婷亚洲| 天天天操操操 | 成年入口无限观看网站 | 99精品欧美一区二区三区综合在线 | 国产精品亚洲成在人线 | 国产精品人人做人人爽人人添 | 一道本一区二区三区 | 亚洲欧美一区二区精品中文字幕 | 国产精品美乳一区二区免费 | 亚洲一区免费在线观看 | 色婷婷国产精品 | 精品国产乱码一区二区三区a | 亚洲国产精品久久 | 亚洲精品视频一区二区三区 | 一区二区欧美视频 | 天天澡天天狠天天天做 | 国产精品国产 | 国产日韩在线视频 | av在线免费观看网站 | a久久| 国产成人精品一区二区三区四区 | 欧美日韩一区二区三区在线观看 | 国产成人综合av | 91精品综合久久久久久五月天 | 欧美精品色网 | 中文字幕综合在线 | 欧美精品一二三 | 久久99国产精品 | 日韩视频在线免费播放 | 日韩第1页| 操操操干干干 | 日韩亚洲视频 | 欧美精品1区 | 久久大陆| 日韩欧美视频一区 | 久久精品99 | 国产伦精品一区二区三区在线 | 免费在线色 | 91色在线观看 | 久久亚洲精品视频 | 欧美日韩国产一区二区三区 | 91精品国产91综合久久蜜臀 | 亚洲欧美日韩国产综合 | 国产精品美女www爽爽爽动态图 | 久久99这里只有精品 | 国产免费观看一区二区三区 | 在线免费毛片 | 欧美怡红院视频一区二区三区 | 亚洲精品www久久久久久广东 | 黄色毛片在线看 | 在线观看欧美一区 | 欧美精品一区在线 | 羞羞视频网站在线免费观看 | 在线免费观看日韩视频 | 亚洲欧美日韩电影 | 91夜夜操| 成人精品网站在线观看 | 天天艹逼 | 黄色在线免费观看 | 欧美一区二区三区免费 | 精品亚洲一区二区三区在线观看 | 成人免费网站在线观看 | 亚洲精品乱码久久久久久按摩观 | 国产精品亚洲天堂 | 欧美日韩精品一二区 | 91精品国产欧美一区二区成人 | 麻豆av电影在线观看 | 成人欧美一区二区三区黑人孕妇 | 国产一级免费在线 | 欧美一区二区久久 | 亚洲福利影院 | 一区二区三区在线播放 | 亚洲 欧美 精品 | 久久久久久亚洲 | 日韩中文字幕在线观看 | 国产精品伦理一区 | 99这里只有精品视频 | 日本不卡高字幕在线2019 | 国产精品久久久久久久毛片 | 国产精品国产精品国产专区不片 | 成人av网站在线 | 一本大道久久a久久精二百 亚洲欧美高清 | 一区小视频 | av在线成人 | 一区二区三区国产 | 九九免费精品视频 | 成人在线免费视频 | 亚洲欧美精品 | 国产毛片a级 | 国产精品久久久久久久久免费高清 | 黑人性dh| 精品国偷自产在线 | 午夜激情影院 | 在线99视频 | 精品久久99| 色噜噜视频 | 亚洲精品v | 中国大陆高清aⅴ毛片 | 丝袜 亚洲 另类 欧美 综合 | 狠狠影院| 日韩毛片免费看 | 日韩视频网 | 中文字幕一区二区三区乱码图片 | 亚洲视频 欧美视频 | 婷婷午夜激情 | 国产精品国产三级国产aⅴ无密码 | 丁香久久 | 中文字幕亚洲一区二区三区 | 久久精品国产99国产 | 亚洲成人精品在线观看 | 九一精品| 午夜精品一区 | 一区免费在线观看 | 久久久精品欧美一区二区免费 | 影音先锋中文字幕在线 | 香蕉大人久久国产成人av | 日韩三级视频 | 欧美精品一区二区三区在线四季 | 日韩精品区| 日韩免费精品 | 国产成人免费视频网站高清观看视频 | 五月天婷婷精品 | 欧洲成人一区 | 欧美一级c片 | 人人鲁人人莫一区二区三区 | 久久亚洲天堂 | 亚洲一区二区高清视频 | 久久综合九色综合欧美狠狠 | 偷拍呻吟高潮91 | 欧洲精品一区 | 欧美精品欧美极品欧美激情 | a在线播放 | 午夜天堂精品久久久久 | 亚洲免费国产视频 | 午夜影院操 | 91在线精品一区二区 | 日本精品在线观看 | 久久久久亚洲精品 | 久久国产精品视频一区 | 91中文字幕 | 国产一区二区在线看 | 日韩伦理一区二区 | 久久88| 国产丝袜一区二区三区免费视频 | 91视频播放 | 亚洲欧美日韩精品久久亚洲区 | 亚洲一区中文 | 黄色91在线| 色综久久 | 国产aaa毛片 | 99亚洲国产精品 | 久久国产精品一区 | 亚洲黄色av网站 | a级在线观看免费 | 国产激情在线视频 | 亚洲美女网站 | 亚洲一区中文字幕在线观看 | 香蕉成人啪国产精品视频综合网 | 国产成人免费 | 男女羞羞视频免费在线观看 | 午夜私人影院在线观看 | 韩国av一区二区 | 日韩欧美在线视频 | 亚洲国产婷婷香蕉久久久久久99 | 精品国产乱码久久久久久1区2区 | 黑人巨大精品欧美一区二区免费 | 亚洲成人av在线 | av国产精品 | 在线国产一区二区 | 亚洲一区在线观看视频 | 国产成人午夜精品5599 | 国产精品国产成人国产三级 | 中文字幕 在线观看 | 免费视频二区 | 国产精品美女久久久久aⅴ国产馆 | 亚洲欧美精品一区二区三区 | 999在线观看精品免费不卡网站 | 国产欧美一区二区精品忘忧草 | 亚洲精品一区二三区不卡 | 性色视频免费观看 | 少妇色欲网 | 最新中文字幕在线 | 久久精品亚洲精品 | 久久国产美女 | 成人在线视频一区 | 日韩一区二区三区在线观看 | 亚洲一区欧美 | 欧美精品一区二区三区四区 | 亚洲精选免费视频 | 欧美激情精品久久久久久 | 国产婷婷综合 | 欧美精品一区在线观看 | 精品久久久久久久人人人人传媒 | 99久久免费看视频 | 亚洲片在线观看 | 日韩一区二区在线观看 | 99亚洲视频| 欧美一区二区三区视频在线观看 | 精品视频在线免费观看 | 国产一区二区精品久久岳 | 久草日韩| 国产日韩亚洲欧美 | 成人欧美一区二区三区黑人孕妇 | 9色porny自拍视频一区二区 | 亚洲精品一二区 | 国产精品久久久久久久久 | 日韩成人一区 | 国产精品高清在线 | 一区二区日本 | 综合久久综合 | 夜夜av | 男女国产视频 | 密室大逃脱第六季大神版在线观看 | 91精品啪aⅴ在线观看国产 | 在线观看国产 | 一区二区三区精品视频 | 91成人区| 国产精久久一区二区三区 | 日韩欧美理论片 | 国产成人午夜 | 久久免费福利视频 | 99青青草| 精品九九| 羞羞视频网站免费看 | 日韩国产精品一区二区三区 | 亚洲 欧美 另类 综合 偷拍 | 永久黄网站色视频免费 | 午夜精品久久久久久久男人的天堂 | 成人av一区二区三区 | 在线观看91 | 国产精品网站在线看 | 999精品网| 综合久久综合久久 | 日本不卡免费新一二三区 | 综合久久综合久久 | 视频在线一区二区 | 欧美日韩成人在线观看 | 91精品视频在线播放 | 亚洲人成人一区二区在线观看 | 国产91精选 | 日本免费一区二区三区 | 日韩第一区 | 国产一级视频在线播放 | 久久国产精品免费一区二区三区 | 在线观看成人小视频 | 亚洲片在线观看 | 欧美在线视频网站 | www.久久 | 欧美一区2区三区4区公司二百 | 妹子干综合 | 国产日韩欧美精品 | 黄色大片网| 成人亚洲电影 | 国产九九精品 | 黄色小视频在线观看 | 丰满少妇久久久久久久 | 成人精品鲁一区一区二区 | 亚洲一区国产精品 | 另类五月 | 日韩欧美在线视频 |