黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

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

SpringBoot中實現數據字典的示例代碼

瀏覽:2日期:2023-04-26 13:58:31

我們在日常的項目開發中,對于數據字典肯定不模糊,它幫助了我們更加方便快捷地進行開發,下面一起來看看在 SpringBoot 中如何實現數據字典功能的

一、簡介

1、定義

數據字典是指對數據的數據項、數據結構、數據流、數據存儲、處理邏輯等進行定義和描述,其目的是對數據流程圖中的各個元素做出詳細的說明,使用數據字典為簡單的建模項目。簡而言之,數據字典是描述數據的信息集合,是對系統中使用的所有數據元素的定義的集合。

數據字典(Data dictionary)是一種用戶可以訪問的記錄數據庫和應用程序元數據的目錄。主動數據字典是指在對數據庫或應用程序結構進行修改時,其內容可以由DBMS自動更新的數據字典。被動數據字典是指修改時必須手工更新其內容的數據字典。

2、理解

數據字典是一種通用的程序設計思想,將主體與分支存于兩張數據表中,他們之間靠著唯一的 code 相互聯系,且 code 是唯一存在的,分支依附主體而存在,每一條分支都有它唯一對應的屬性值

例如:性別(sex),分為(0?保密1?男2?女),那么數據字典的設計就應該是

主表:

{'code': 'sex','name': '性別'}

副表:

[{'dictCode': 'sex','code': '0','text': '保密'},{'dictCode': 'sex','code': '1','text': '男'},{'dictCode': 'sex','code': '2','text': '女'}]

那么我們在使用數據字典的時候,只需要知道 dictCode,再使用 code 找到唯一的字典值

二、數據表設計

1、數據表設計

主表:

drop table if exists sys_dict;/*==============================================================*//* Table: sys_dict *//*==============================================================*/create table sys_dict( id bigint(20) not null auto_increment comment ’主鍵id’, code varchar(32) comment ’編碼’, name varchar(32) comment ’名稱’, descript varchar(64) comment ’描述’, statustinyint(1) default 0 comment ’狀態(0--正常1--凍結)’, create_time datetime comment ’創建時間’, create_user bigint(20) comment ’創建人’, del_flag tinyint(1) default 0 comment ’刪除狀態(0,正常,1已刪除)’, primary key (id))type = InnoDB;alter table sys_dict comment ’字典管理表’;

副表:

drop table if exists sys_dict_detail;/*==============================================================*//* Table: sys_dict_detail *//*==============================================================*/create table sys_dict_detail( id bigint(20) not null comment ’主鍵id’, dict_code varchar(32) comment ’字典編碼’, code varchar(32) comment ’編碼’, name varchar(32) comment ’名稱’, primary key (id))type = InnoDB;alter table sys_dict_detail comment ’字典配置表’;

它們的關系如圖所示:

SpringBoot中實現數據字典的示例代碼

2、數據字典配置

SpringBoot中實現數據字典的示例代碼

三、開發前戲

1、引入 maven 依賴

<!-- web支持 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><!-- thymeleaf模板引擎 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- aop依賴 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency><!-- lombok插件 --><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional></dependency>

我們引入了 aop 切面所需依賴,我們的數據字典也是基于 aop 切面實現的

2、創建實體類

用戶信息表 SysUserInfo.java:

import com.baomidou.mybatisplus.annotation.*;import com.baomidou.mybatisplus.extension.activerecord.Model;import com.zyxx.common.annotation.Dict;import io.swagger.annotations.ApiModel;import io.swagger.annotations.ApiModelProperty;import lombok.Data;import lombok.EqualsAndHashCode;import lombok.experimental.Accessors;import java.io.Serializable;/** * <p> * 用戶信息表 * </p> * * @author lizhou * @since 2020-07-06 */@Data@EqualsAndHashCode(callSuper = false)@Accessors(chain = true)@TableName('sys_user_info')@ApiModel(value='SysUserInfo對象', description='用戶信息表')public class SysUserInfo extends Model<SysUserInfo> { @ApiModelProperty(value = 'ID') @TableId(value = 'id', type = IdType.AUTO) private Long id; @ApiModelProperty(value = '登錄賬號') @TableField('account') private String account; @ApiModelProperty(value = '登錄密碼') @TableField('password') private String password; @ApiModelProperty(value = '姓名') @TableField('name') private String name; @ApiModelProperty(value = '性別(0--未知1--男2--女)') @TableField('sex') @Dict(dictCode = 'sex') private Integer sex; @ApiModelProperty(value = '狀態(0--正常1--凍結)') @TableField('status') @Dict(dictCode = 'status') private Integer status;}

3、返回結果通用實體類

返回結果通用實體類 LayTableResult.java:

import lombok.Getter;import lombok.Setter;import java.util.List;/** * @param <T> 返回的實體類 * @author lizhou * @描述 后臺返回給LayUI的數據格式 */@Getter@Setterpublic class LayTableResult<T> { /** * 接口狀態 */ private Integer code; /** * 提示信息 */ private String msg; /** * 接口數據長度 */ private Long count; /** * 接口數據 */ private List<T> data; /** * 無參構造函數 */ public LayTableResult() { super(); } /** * 返回數據給表格 */ public LayTableResult(Long count, List<T> data) { super(); this.count = count; this.data = data; this.code = 0; }}

由于我用的是 layui 前端框架,我寫了一個返給 layui 表格的通用實體類,這是在實現數據字典需要用到的,判斷響應返回實體類的類型來判斷是否需要注入字典

四、開發實現

1、創建自定義注解

我們創建一個自定義注解 @Dict 來實現數據字典

import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * 數據字典注解 * * @author Tellsea * @date 2020/6/23 */@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface Dict { /** * 字典類型 * * @return */ String dictCode(); /** * 返回屬性名 * * @return */ String dictText() default '';}

2、注解實現

我們使用 aop 切面來實現什么的自定義注解 @Dict

import com.alibaba.fastjson.JSONObject;import com.fasterxml.jackson.annotation.JsonFormat;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import com.zyxx.common.annotation.Dict;import com.zyxx.common.utils.LayTableResult;import com.zyxx.common.utils.ObjConvertUtils;import com.zyxx.sbm.entity.SysDictDetail;import com.zyxx.sbm.service.SysDictService;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import java.lang.reflect.Field;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;/** * 數據字典切面 * * @author Tellsea * @date 2020/6/23 */@Aspect@Component@Slf4jpublic class DictAspect {/*** 字典后綴*/ private static String DICT_TEXT_SUFFIX = 'Text'; @Autowired private SysDictService sysDictService;/*** 切點,切入 controller 包下面的所有方法*/ @Pointcut('execution( * com.zyxx.*.controller.*.*(..))') public void dict() { } @Around('dict()') public Object doAround(ProceedingJoinPoint pjp) throws Throwable { long time1 = System.currentTimeMillis(); Object result = pjp.proceed(); long time2 = System.currentTimeMillis(); log.debug('獲取JSON數據 耗時:' + (time2 - time1) + 'ms'); long start = System.currentTimeMillis(); this.parseDictText(result); long end = System.currentTimeMillis(); log.debug('解析注入JSON數據 耗時' + (end - start) + 'ms'); return result; } private void parseDictText(Object result) { if (result instanceof LayTableResult) { List<JSONObject> items = new ArrayList<>(); LayTableResult rr = (LayTableResult) result; if (rr.getCount() > 0) {List<?> list = (List<?>) rr.getData();for (Object record : list) { ObjectMapper mapper = new ObjectMapper(); String json = '{}'; try { // 解決@JsonFormat注解解析不了的問題詳見SysAnnouncement類的@JsonFormat json = mapper.writeValueAsString(record); } catch (JsonProcessingException e) { log.error('Json解析失敗:' + e); } JSONObject item = JSONObject.parseObject(json); // 解決繼承實體字段無法翻譯問題 for (Field field : ObjConvertUtils.getAllFields(record)) { //解決繼承實體字段無法翻譯問題 // 如果該屬性上面有@Dict注解,則進行翻譯 if (field.getAnnotation(Dict.class) != null) { // 拿到注解的dictDataSource屬性的值 String dictType = field.getAnnotation(Dict.class).dictCode(); // 拿到注解的dictText屬性的值 String text = field.getAnnotation(Dict.class).dictText(); //獲取當前帶翻譯的值 String key = String.valueOf(item.get(field.getName())); //翻譯字典值對應的text值 String textValue = translateDictValue(dictType, key); // DICT_TEXT_SUFFIX的值為,是默認值: // public static final String DICT_TEXT_SUFFIX = '_dictText'; log.debug('字典Val: ' + textValue); log.debug('翻譯字典字段:' + field.getName() + DICT_TEXT_SUFFIX + ': ' + textValue); //如果給了文本名 if (!StringUtils.isBlank(text)) {item.put(text, textValue); } else {// 走默認策略item.put(field.getName() + DICT_TEXT_SUFFIX, textValue); } } // date類型默認轉換string格式化日期 if ('java.util.Date'.equals(field.getType().getName())&& field.getAnnotation(JsonFormat.class) == null&& item.get(field.getName()) != null) { SimpleDateFormat aDate = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss'); item.put(field.getName(), aDate.format(new Date((Long) item.get(field.getName())))); } } items.add(item);}rr.setData(items); } } } /** * 翻譯字典文本 * * @param dictType * @param key * @return */ private String translateDictValue(String dictType, String key) { if (ObjConvertUtils.isEmpty(key)) { return null; } StringBuffer textValue = new StringBuffer(); String[] keys = key.split(','); for (String k : keys) { if (k.trim().length() == 0) {continue; } /** * 根據 dictCode 和 code 查詢字典值,例如:dictCode:sex,code:1,返回:男 * 應該放在redis,提高響應速度 */ SysDictDetail dictData = sysDictService.getDictDataByTypeAndValue(dictType, key); if (dictData.getName() != null) {if (!''.equals(textValue.toString())) { textValue.append(',');}textValue.append(dictData.getName()); } log.info('數據字典翻譯: 字典類型:{},當前翻譯值:{},翻譯結果:{}', dictType, k.trim(), dictData.getName()); } return textValue.toString(); }}

3、注解使用

我們只需要在實體類的屬性上加入我們實現的自定義注解即可

@ApiModelProperty(value = '性別(0--未知1--男2--女)')@TableField('sex')@Dict(dictCode = 'sex')private Integer sex;@ApiModelProperty(value = '狀態(0--正常1--凍結)')@TableField('status')@Dict(dictCode = 'status')private Integer status;

我們對 sex,status 都加入了 @Dict(dictCode = “”) 注解,那么我們在獲取用戶信息的時候,就能獲取到對應的字典值了

五、測試

1、編寫 API 查詢

我們在 controller 層開放一個 API 實現查詢用戶列表

/** * 分頁查詢 */@PostMapping('list')@ResponseBodypublic LayTableResult list(Integer page, Integer limit, SysUserInfo userInfo) { QueryWrapper<SysUserInfo> queryWrapper = new QueryWrapper<>(); if (StringUtils.isNotBlank(userInfo.getName())) { queryWrapper.like('name', userInfo.getName()); } if (null != userInfo.getSex()) { queryWrapper.eq('sex', userInfo.getSex()); } if (null != userInfo.getStatus()) { queryWrapper.eq('status', userInfo.getStatus()); } queryWrapper.orderByDesc('create_time'); IPage<SysUserInfo> iPage = sysUserInfoService.page(new Page<>(page, limit), queryWrapper); return new LayTableResult<>(iPage.getTotal(), iPage.getRecords());}

注意: 這里我們使用了 LayTableResult 作為相應實體類,與上面我們編寫的返回通用實體類是一致的,必須一直,才能實現數據字典功能

2、調用 API

返回結果如下:

{'code': 0,'msg': null,'count': 3,'data': [{'id': 2,'account': '15286779045','name': '周杰倫','sex': 1,'sexText': '男','status': 0,'statusText': '正常'}, {'id': 1,'name': '超級管理員','account': '15286779044','sex': 1,'sexText': '男','status': 0,'statusText': '正常'}]}

可以看出,返回的數據中,多出了 sexText,statusText,兩個屬性,也就證明我們的字典功能已經實現成功

六、總結

1、優點

1、在一定程度上,通過系統維護人員即可改變系統的行為(功能),不需要開發人員的介入。使得系統的變化更快,能及時響應客戶和市場的需求。2、提高了系統的靈活性、通用性,減少了主體和屬性的耦合度 3、簡化了主體類的業務邏輯 4、能減少對系統程序的改動,使數據庫、程序和頁面更穩定。特別是數據量大的時候,能大幅減少開發工作量5、使數據庫表結構和程序結構條理上更清楚,更容易理解,在可開發性、可擴展性、可維護性、系統強壯性上都有優勢。

2、缺點

1、數據字典是通用的設計,在系統效率上會低一些。2、程序算法相對復雜一些。3、對于開發人員,需要具備一定抽象思維能力,所以對開發人員的要求較高。

3、優化

我們的數據字典數據應該存放在 redis 中,減少與數據庫的交互次數,提高響應速度

到此這篇關于SpringBoot中實現數據字典的示例代碼的文章就介紹到這了,更多相關SpringBoot 數據字典內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 亚洲码与欧洲码一二三四区 | 高清精品国内视频 | 亚洲国产精品无码久久 | 无码av免费毛片一区二区 | 中文www天堂 | a资源在线观看 | 一本之道久 | 国产综合视频在线 | 性人久久网av | 人妻少妇精品视频一区二区三区 | 激情视频网址 | 久久草草亚洲蜜桃臀 | 久草中文在线 | 亚洲欧美日本国产高清 | 国产精品久久久久永久免费看 | 亚欧美精品 | 亚洲成a人v在线蜜臀 | 中出中文字幕 | 亚洲精品一区二区三区高潮 | 在线播放唐嫣毛片 | 18精品爽国产白嫩精品 | 国产精品欧美大片 | 亚洲人成网亚洲欧洲无码 | 国产在线视频第一页 | 一本之道高清码狼人 | 黄色午夜视频 | 四库影院永久国产精品 | 午夜精品久久久久久久99芒果 | 亚洲成a人片在线www | a v免费视频 | 激情亚洲一区国产精品 | 亚洲视频一 | 欧美精品色婷婷五月综合 | 超碰在线亚洲 | 国产成人片无码视频在线观看 | 国产成人一区二区三区小说 | 欧美成人一区二区三区高清 | 男女做爰猛烈啪啪吃奶动床戏麻豆 | 日本一卡2卡3卡4卡无卡免费网站 | 日韩视频在线视频 | 91亚色视频在线观看 | 中国人与拘一级毛片 | 亚洲性免费 | 妞干网这里只有精品 | 51久久成人国产精品麻豆 | 久久久久免费 | 亚洲精品666 | 风韵犹存三浦惠理子aa | 国产精品一区二区三区久久 | 荡女精品导航 | 久操国产精品 | 国产精品乱码久久久久久久久 | 亚洲中文字幕久久无码精品 | 黄色资源在线观看 | 九九爱精品| 国产成人亚洲日韩欧美 | sese视频在线观看 | 欧美猛少妇色xxxxx猛叫 | 国产一级黄色录像 | 国产精品乱码一区二区视频 | 99热这里只有精品18 | 国产女同疯狂作爱系列69 | 成人免费黄色小视频 | 日本丰满大乳mm | 99久久久久国产精品免费 | 黄色片免费在线观看 | 亚洲一区二区无码偷拍 | 成人午夜激情影院 | 激情婷婷六月天 | 亚洲第一夜页 | 97人人澡人人深人人添 | 黑人操亚洲美女 | 先锋影音av资源在线观看 | 97人人艹| 中文字幕理论片 | 国产3页 | 国产在线精品一区 | 这里只有精品在线播放 | 黄色网入口 | av免费网站在线观看 | 波多野结衣高清视频 | 国产精品资源一区二区 | 成人在线免费高清视频 | 亚洲特黄 | 一本大道伊人av久久乱码 | 久久久久久久香蕉 | 免费在线看黄视频 | 国产真实乱偷精品视频免 | 污污污污污污www网站免费 | 日韩欧美一区二区视频 | 在线看片 | 亚洲 高清 成人 动漫 | 免费午夜拔丝袜www在线看 | 色鬼久久 | 日韩一区二区在线看 | 亚洲暴爽av天天爽日日碰 | 中文字幕免费在线看线人动作大片 | 亚洲天堂偷拍 | 久久综合中文字幕 | 蜜臀久久99精品久久久久久 | 国产精品国产三级国产aⅴ9色 | 一个人免费观看视频www中文 | 国产成人精品在线观看 | 91精品国产色综合久久久浪潮 | 放荡的美妇在线播放 | 久久99精品久久久久久久青青日本 | 国产黄色片免费在线观看 | 亚日韩在线 | 亚洲综合激情另类专区 | 国产极品视频在线观看 | 91亚洲精品久久久中文字幕 | 国产自产在线 | 欧美色频 | 特级免费毛片 | 亚洲黄色小视频在线观看 | 国产视频97| 国产激情久久久久影院老熟女 | 久久综合偷偷噜噜噜色 | 亚洲国产精品免费在线观看 | 国产麻豆精品久久一二三 | 国产午夜精品久久久久久 | 成人欧美一区二区三区黑人免费 | 精品国产一区二区三区av 性色 | 亚洲网在线观看 | 麻豆精品91 | 欧美精品videos另类 | 色99在线观看 | 精品黑人一区二区三区久久 | 亚洲视频在线一区 | 亚洲成av人无码综合在线观看 | 日日婷婷夜日日天干 | 亚洲国产精品一区第二页 | 大rb狠狠地给你这y荡的视频 | 日本极品视频 | 另类天堂av| 四虎最新网址在线观看 | 美女黄色在线观看 | 91偷拍网 | 精品久久久免费视频 | 麻豆精品一区综合av在线 | 日本高清aⅴ毛片免费 | 特级西西444www大精品视频免费看 | 欧美日韩精品一区二区在线播放 | 噜噜噜久久亚洲精品国产品91 | 国产午夜福利片 | 欧美牲交a欧美牲交aⅴ免费真 | 日韩欧美精品在线 | 破了亲妺妺的处免费视频国产 | 欧美日韩三 | 亚洲欧美一区二区三区四区五区 | 亚洲码欧美码一区二区三区 | 毛片链接 | 久久无码精品一区二区三区 | 日韩噜噜| 久久黄色影院 | 嫩草国产 | 女人两腿打开让男人添野外视频 | 色爽交| 北条一二三区 | 欧美日韩网址 | 天天射天天干天天 | 日韩精品一区二区中文字幕 | 嫩草影院ncyy | 在线观看av一区 | 色资源在线观看 | 久久久精品人妻无码专区不卡 | 欧美日韩精品一区二区视频 | av无码免费岛国动作片 | h片在线免费观看 | 另类色综合 | 精品国产传媒 | 我要看免费黄色片 | 国产精品久久久久久久久久99 | 国产一区二区三区 | 国产乱能| 中文字幕乱轮 | 国产精品性视频一区二区 | 久久久国产乱子伦精品作者 | 日韩一级欧美 | 无码午夜成人1000部免费视频 | 全国最大成人网 | 在线观看中文av | 国产精品久久久久久欧美 | 亚洲国产一二 | 成人免费777777 | 亚洲高清国产拍精品网络战 | 四月婷婷 | 男女又爽又黄视频 | 高柳家在线观看 | av有码在线 | 女人高潮抽搐aaa | 岛国av资源 | 国产精品美女久久 | 黄色午夜视频 | 亚洲区小说区图片区qvod | 亚洲日韩av无码一区二区三区 | 亚洲91影院 | 国产精品a成v人在线播放 | www.91在线播放 | 香蕉视频黄在线观看 | 又色又爽又黄的视频软件app | 粉嫩av久久一区二区三区 | www.色涩涩.com网站 | 久久av片| 色哟哟一区二区三区精华液 | 男女啪啪做爰高潮www成人福利 | 夜夜高潮夜夜爽夜夜爱爱一区 | 99国产精品无码专区 | 蜜臀av亚洲一区二区 | 一二三区在线 | 久久aaaa片一区二区 | 国产精品96久久久久久吹潮 | 综合色九九 | 天天摸日日添狠狠添婷婷 | 国产精品青草综合久久久久99 | 女女互磨互喷水高潮les呻吟 | 99男女国产精品免费视频 | 欧美在线一区二区三区 | 女人黄色特级大片 | 国内精品免费午夜又爽又色愉情 | 黑人与日本少妇 | 一级特黄妇女高潮2 | 亚洲高清福利 | 偷拍激情视频一区二区三区 | 91看片淫黄大片一级在线观看 | 99久久99久久精品免费看蜜桃 | 国内精品视频在线观看 | 日日干夜夜爽 | 久久精品无码一区二区三区免费 | 毛片网在线观看 | 4438x成人网一全国最大色成网站 | 国产日产亚洲系列最新 | 久久人人妻人人做人人爽 | 日韩免费视频网站 | 欧美中日韩在线 | 一级黄色片一级黄色片 | 国产精品9999久久久久仙踪林 | 久久精品日产第一区二区三区乱码 | 99久久亚洲精品日本无码 | 亚洲精品美女在线观看 | 国产成人无码aa片免费看 | 欧美成人黄色片 | 中国性受xxxx免费 | 国产成人无码区免费内射一片色欲 | 中文字幕精品一二三四五六七八 | 久久天天插 | 欧美色涩| 干片网在线观看 | 不卡av免费 | 一区二区三国产 | 3344永久在线观看视频免费 | 日本特黄特色aaa大片免费 | 久久免费激情视频 | 色综合久久久久久 | 日韩中文字幕免费看 | 欧美成人精品欧美一级乱 | 中国一级特黄毛片 | 久草青青视频 | 日本妞一区 | 色91在线| 西野翔中文久久精品国产 | 高h全肉老汉嫩草文 | 国产欧美日韩二区 | 豆国产95在线 | 亚洲 | 欧美综合自拍亚洲综合图 | 理论片福利片 | 欧美日韩小视频 | 国产一区二区不卡 | 国产免国产免费 | 国产精品久久久久7777 | 白人と日本人の交わりビデオ | 成人性生交大片免费看视 | 超碰日韩在线 | 国产盗摄夫妻原创视频在线观看 | 极品少妇一区二区三区 | 熟妇人妻va精品中文字幕 | 免费人成在线观看网站 | a级老太婆毛片老太婆毛片 a级毛片,黄,免费观看 m | 老妇肥熟凸凹丰满刺激 | 国产色拍| 国产成人精品白浆久久69 | 国产自产在线 | 波多野结衣久久精品 | 精品国产一区二区三区久久久蜜月 | 亚洲一级片在线播放 | 免费国产黄 | 亚洲激情四射 | 久久久精品动漫 | 久久久久免费精品国产小说色大师 | 色亚洲色图 | 男人午夜剧场 | 欧美精品久久久久久久久久 | 91尤物在线 | 在线观看国产视频 | 日韩精品一区在线 | 古代玷污糟蹋np高辣h文 | 精品精品欲天堂导航 | 日韩精品一区二区三区国语自制 | 免费无码毛片一区二三区 | 久久艹伊人 | 中文字幕无线观看中文字幕 | 成人性生交大片免费7 | 久久98精品久久久久久久性 | www嫩草蜜桃| 男人的天堂在线视频 | 99久久婷婷国产综合精品青草免费 | 亚洲精品乱码久久久久久蜜桃麻豆 | 99精品人妻无码专区在线视频区 | 丝袜捆绑调教午夜一区二区 | 人妻夜夜爽天天爽一区 | 热久久91 | 成人短视频在线观看 | 玖玖视频网| 国产精品无码翘臀在线看 | 天天摸天天碰 | 国产91免费看 | 国产精品入口夜色视频大尺度 | 91草视频| dy888亚洲精品一区二区三区 | 高清精品国内视频 | 美女在线国产 | 神马午夜精品 | 久久久久97国产精 | 美丽的熟妇中文字幕 | 玖玖视频网 | 毛片网站入口 | 国产又黄又猛 | 在线观看日本视频 | 91 pro国产| 香港三日本三级少妇66 | 日本japanese丰满少妇 | 五月天婷婷视频在线观看 | 日韩成人免费69vm | 波多野吉衣在线观看视频 | 伊人影院中文字幕 | 国产在线观看你懂的 | 欧美一进一出抽搐大尺度视频 | 亚洲最大国产成人综合网站 | 成人欧美一区二区三区黑人麻豆 | 日本中文字幕在线观看 | 亚洲精品美女 | 97超碰在线播放 | 欧美日韩国产在线精品 | 91九色蝌蚪porny| 欧美三日本三级三级在线播放 | 欧洲亚洲一区二区 | 手机在线观看日韩大片 | 无码人妻一区二区三区免费 | 成人99一区二区激情免费看 | 日韩av午夜 | 久久99精品久久久久久牛牛影视 | 久久久久国产精品 | 国产欧美高清在线观看 | 两男一前一后cao一女 | 国产永久免费视频 | 欧美成人三级在线播放 | 久久久国产精华液999999 | 国产又黄又爽又色的免费视频白丝 | www.久久av| 成人羞羞国产免费软件动漫 | 久久久久国产一区二区三区 | 中文日韩av | 国产又粗又猛又爽又黄的视频软件 | 老熟妇仑乱一区二区视頻 | 久久久欧美 | 91免费.| 久久这里只有精品8 | 国产手机在线精品 | 午夜激情视频在线 | 中文字幕无人区二 | 人妻少妇av无码一区二区 | 性做久久 | 1024你懂的日韩 | 亚洲另类在线观看 | 日韩人妻无码一区二区三区 | 亚洲精品97久久中文字幕无码 | 国产免费人成xvideos视频 | 一边吃奶一边做爰爽到爆视频 | 亚洲午夜一区二区 | 一夲道无码人妻精品一区二区 | 咪咪久久 | 男男成人高潮片免费网站 | 成人免费在线观看网站 | 性视频在线 | 99久久免费视频在线观看 | 国产成人精品一区二区三区四区 | 91欧美在线视频 | 国产精品夜夜夜爽阿娇 | 午夜在线视频观看 | 在线免费看黄色片 | 亚洲自拍偷拍av | 欧美一区二区人人喊爽 | 成人av免费播放 | 天天操天天干天天舔 | 久久久黄色网 | 无码人妻av一区二区三区蜜臀 | 99久精品 | 成人在线看片 | 九色porny丨首页在线 | いいなり北条麻妃av101 | 欧美性猛交一区二区三区精品 | 亚洲成av人片在线观看无码不卡 | 日韩精品一区二区在线观看 | 俺去俺来也www色官网cms | 欧美黑人又大又粗xxxxx | 91看片成人 | 久久综合综合 | 亚洲视频a| 久久精品91视频 | 亚洲aⅴ在线无码播放毛片一线天 | 妩媚尤物娇喘无力呻吟在线视频 | 日韩中文字幕一区二区三区 | 四虎成人精品无码永久在线 | 玩弄白嫩少妇xxxxx性 | 区一区二区三 | 99爱在线视频这里只有精品 | 精品黑人一区二区三区久久 | 特黄特色的大片观看免费视频 | 国产精品综合久久 | 免费在线不卡av | 无码人妻丰满熟妇区五十路百度 | 偷拍久久久| 免费福利视频在线观看 | 成人做爰100部片免费下载 | 欧美一级黄色片在线观看 | 九九涩| 26uuu亚洲婷婷狠狠天堂 | 欧美性俱乐部 | 国产精品久久久久久一二三四五 | 国产资源第一页 | 青娱乐极品在线 | 无码人妻丰满熟妇区五十路 | av免费在线播放网址 | 天天添天天操 | 国产一级理论 | 韩日午夜在线资源一区二区 | 内射后入在线观看一区 | 男人女人做爽爽18禁网站 | 久久综合se| 宅男噜噜66国产精品观看 | 亚洲第一色区 | 毛片一区二区三区 | 成年美女黄网站色大免费视频 | 国产伦理一区二区 | 国产成人免费片在线观看 | 国产成人精品123区免费视频 | 国产成人av一区二区三区在线观看 | 二级大黄大片高清在线视频 | 国产欧美国日产高清 | 欧美激情在线一区二区 | 成人羞羞网站入口免费 | 污视频91 | 午夜一区二区国产好的精华液 | 在线播放www| 精品国产一区二区三区2021 | 欧美黑人精品一区二区不卡 | 国产精品999在线观看 | 午夜精品久久久久久久 | 天海翼视频在线观看 | 亚洲在线免费观看视频 | 国产普通话对白刺激 | 久久久久国产精品久久久久 | 日本黄色中文字幕 | 97久久精品人妻人人搡人人玩 | 亚洲午夜国产一区99re久久 | 激情内射亚洲一区二区三区爱妻 | youjizz视频 | 国内自拍农村少妇在线观看 | 久热综合| 古代中国春交性视频xxx | 少妇高潮喷潮久久久影院 | 欧美成人午夜剧场 | 成人免费视频观看视频 | 伊人色综合久久天天 | 黑人精品一区二区 | av免费网站观看 | 国产叼嘿视频在线观看 | 国产女人18毛片水真多1kt∧ | 亚洲无av在线中文字幕 | 2019中文字幕在线观看 | 成人羞羞视频播放网站 | 亚洲中文字幕无码爆乳av | 大蜜桃臀偷拍系列在线观看 | 亚洲国产精品激情在线观看 | 国产人妻精品一区二区三区 | 毛片无遮挡高清免费 | 福利片av| 美女视频黄频a美女大全 | 日本aa在线观看 | 东北女人啪啪对白 | 特级黄色毛片 | 亚洲激情五月婷婷 | 3344国产精品免费看 | 一级一级一级毛片 | 在线观看欧美国产 | 农村寡妇一区二区三区 | 国产在线专区 | 色一情一交一乱一区二区三区 | 国产激情久久久 | 欧洲国产伦久久久久久久 | 特黄一级大片 | 国产区二区| 中文天堂av | 亚洲天堂午夜 | 电影久久久久久 | 加勒比一区二区三区 | 国产视频一区二区三区在线观看 | 国产女人的高潮国语对白 | 精品一区二区三区中文字幕 | www.激情网| 疯狂撞击丝袜人妻 | 香蕉久久av一区二区三区 | 欧美三级在线观看视频 | 国产91在线观 | 欧美国产激情视频 | 亚洲hh| 中文在线8资源库 | 嫩模写真一区二区三区三州 | 亚洲高清在线 | 色综合99久久久无码国产精品 | 欧美日韩一区二区三区四区五区 | 日韩精品无码人妻一区二区三区 | 亚洲国产精品一区二区第一页 | 欧美久久久网站 | 国产黄色片在线观看 | 老司机成人免费视频 | 综合久久久 | 亚洲一区二区三区av在线观看 | 亚洲女人天堂成人av在线 | 中文字幕在线导航 | 成人免费看片载 | 国产精品vⅰdeoxxxx国产 | 黄色顶级片 | 久久综合五月丁香六月丁香 | 伊人成人在线视频 | 色爽视频 | 亚洲精品理论 | 一道本久在线中文字幕 | 久草国产在线视频 | 成人在线视频网站 | 国产视频1区2区3区 国产视频69 | 日韩av无码久久一区二区 | 2012中文字幕在线视频 | 丰满人妻一区二区三区无码av | 97看片吧| 国产三级毛片 | 风流少妇bbwbbw69视频 | 久久亚洲综合 | 男女一边摸一边做爽视频 | 亚洲色欲在线播放一区二区三区 | 亚洲精品91| 亚洲熟妇av乱码在线观看 | 狠狠干青青草 | 免费看欧美一级片 | 欧美熟妇另类久久久久久多毛 | 国产成人精品日本亚洲i8 | 一级黄色网| 国产黄色三级网站 | 国产精品美女久久久久久久 | 亚洲制服一区 | 夜夜爱爱 | 国产 字幕 制服 中文 在线 | 美女胸18大禁视频网站 | 国产乱码精品一区二区三区四川人 | 无码国产69精品久久久久同性 | 国产精品一区二区久久不卡 | 国产亚洲精品久久久久久无几年桃 | 91视频毛片 | av毛片大全 | 熟女少妇内射日韩亚洲 | 欧亚一级片 | 影音先锋成人资源网 | 午夜在线观看一区 | 古代性色禁片在线播放 | 久久久水蜜桃 | 久久黄色视 | 国产精品一v二v在线观看 | 九九热com | 女女百合高h喷汁呻吟视频 女女百合国产免费网站 | 久久99精品久久久久久园产越南 | 成人在线a | 欧美日韩中文在线视频 | 在线精品观看 | 亚洲色图一区二区 | 久久狠狠爱 | 亚洲一区视频网站 | 欧美不卡高清 | 国产一区二区三区四区三区四 | 欧美偷拍综合 | 欧美日韩亚洲中文字幕一区二区三区 | 欧美性极品 | 青青欧美 | 欧洲男女裸体无遮挡做爰 | 国产精品国产精品国产专区不卡 | 中文字幕日本人妻久久久免费 | 九九在线视频 | 中日韩免费视频 | 亚洲中文字幕无码中文字在线 | 精品一区二区三人妻视频 | 在线观看成人无码中文av天堂 | 成人精品视频一区二区 | 国产免费a∨片在线观看不卡 | 国产精品99久 | 国产精品jizz在线观看网站 | 欧美日韩六区 | 国产精品久久久久久久久久久杏吧 | 午夜免费1000| av黄色大片| 欧美一区二区三区成人久久片 | 中文字幕一区二区三区精彩视频 | 多p混交群体交乱小说h | 国产偷伦视频 | 国产69精品久久久久孕妇大杂乱 | 在线观看成年人网站 | 成人欧美视频 |