日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用反射和xml配置文件手写一个小型的框架

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用反射和xml配置文件手写一个小型的框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通用的增刪改查

  • 1. 利用xml配置實體類和數據庫表名的映射關系
  • 2. 根據xml設計,用正確的數據結構映射類封裝好xml信息
  • 3. 得到數據庫連接前,讀取xml信息,用map封裝成映射數據
  • 4. 寫dao時根據反射和map生成sql語句,拿到屬性值
  • 測試

  • 為了解決上一篇文中實體類的局限性:不可加字段;實體名,表名,列的字段一樣,而且順序一樣
  • 上一篇反射實現dao層增刪改查
  • 本文實現結構

1. 利用xml配置實體類和數據庫表名的映射關系

  • sql語句
create table ticket_info (ticket_id number primary key,ticket_name varchar(30) not null, ticket_price number(10, 2) not null ) create sequence ticket_seqcreate table goods_info (goods_id number primary key, goods_name varchar(30) not null,goods_price number(10, 2) not null,goods_date date not null, goods_factory varchar(50) not null ) create sequence goods_seq
  • xml, 映射表屬性和實體類列

  • goods.xml

<?xml version="1.0" encoding="UTF-8"?><class name="com.lovely.entity.Goods" table="goods_info"><id name="gid" column="goods_id"><sequence>goods_seq</sequence></id><property name="gname" column="goods_name"></property><property name="gprice" column="goods_price"></property><property name="gdate" column="goods_date"></property><property name="gfactory" column="goods_factory"></property> </class>
  • ticket.xml
<?xml version="1.0" encoding="UTF-8"?><!-- 實體類和表之間的映射關系 --> <class name="com.lovely.entity.Ticket" table="ticket_info"> <!-- 類名和表名的映射關系 --><id name="tid" column="ticket_id"> <!-- 實體主鍵和表中主鍵列的映射關系 --><sequence>ticket_seq</sequence></id><property name="tname" column="ticket_name"></property> <!-- 屬性名和表名列的映射關系 --><property name="tprice" column="ticket_price"></property></class>
  • goods, 和 entity的實體類
package com.lovely.entity;import java.sql.Date;public class Goods {private Integer gid;private String gname;private Double gprice;private Date gdate;private String gfactory;public Goods() {}public Integer getGid() {return gid;}public void setGid(Integer gid) {this.gid = gid;}public String getGname() {return gname;}public void setGname(String gname) {this.gname = gname;}public Double getGprice() {return gprice;}public void setGprice(Double gprice) {this.gprice = gprice;}public Date getGdate() {return gdate;}public void setGdate(Date gdate) {this.gdate = gdate;}public String getGfactory() {return gfactory;}public void setGfactory(String gfactory) {this.gfactory = gfactory;}} package com.lovely.entity;public class Ticket {private Integer tid;private String tname;private Double tprice;public Ticket() {}public Ticket(Integer tid, String tname, Double tprice) {super();this.tid = tid;this.tname = tname;this.tprice = tprice;}public Integer getTid() {return tid;}public void setTid(Integer tid) {this.tid = tid;}public String getTname() {return tname;}public void setTname(String tname) {this.tname = tname;}public Double getTprice() {return tprice;}public void setTprice(Double tprice) {this.tprice = tprice;}@Overridepublic String toString() {return "Ticket [tid=" + tid + ", tname=" + tname + ", tprice=" + tprice+ "]\n";}}

2. 根據xml設計,用正確的數據結構映射類封裝好xml信息

  • 主鍵id
package com.lovely.base;public class MapperId {// 實體id 映射 數據庫idprivate String idName;private String idColumn;private String seqName;public String getIdName() {return idName;}public void setIdName(String idName) {this.idName = idName;}public String getIdColumn() {return idColumn;}public void setIdColumn(String idColumn) {this.idColumn = idColumn;}public String getSeqName() {return seqName;}public void setSeqName(String seqName) {this.seqName = seqName;}@Overridepublic String toString() {return "MapperId [idName=" + idName + ", idColumn=" + idColumn+ ", seqName=" + seqName + "]";}}
  • MapperData 映射數據類
package com.lovely.base;import java.util.LinkedHashMap;public class MapperData {// 映射文件類// 實體全類名private String className;// 表名private String tableName;private MapperId mapperId;// 存儲除主鍵外 實體屬性 -> 數據表列 相關信息private LinkedHashMap<String, String> properties = new LinkedHashMap<String, String>();public String getClassName() {return className;}public void setClassName(String className) {this.className = className;}public String getTableName() {return tableName;}public void setTableName(String tableName) {this.tableName = tableName;}public MapperId getMapperId() {return mapperId;}public void setMapperId(MapperId mapperId) {this.mapperId = mapperId;}public LinkedHashMap<String, String> getProperties() {return properties;}public void setProperties(LinkedHashMap<String, String> properties) {this.properties = properties;}@Overridepublic String toString() {return "MapperData [className=" + className + ", tableName="+ tableName + ", mapperId=" + mapperId + ", properties="+ properties + "]\n";}}

3. 得到數據庫連接前,讀取xml信息,用map封裝成映射數據

  • 實體屬性名和表的列名一樣,也封裝在map里面了
package com.lovely.dao;import java.io.File; import java.lang.reflect.Field; import java.net.URL; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List;import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader;import com.lovely.base.MapperData; import com.lovely.base.MapperId;public class BaseDao {static {try {Class.forName("oracle.jdbc.OracleDriver");} catch (ClassNotFoundException e) {e.printStackTrace();}}/*** key: 全路徑類名 * value: 類和表的映射關系 MapperData*/public static HashMap<String, MapperData> map = new HashMap<String, MapperData>();static {// 靜態塊解析xml映射文件try { Class<?> baseDaoClass = Class.forName("com.lovely.dao.BaseDao");// 得到xml路徑URL url = baseDaoClass.getResource("/com/lovely/mapper");String path = url.getFile();File file = new File(path);// 拿到所有xml文件File[] files = file.listFiles();for (int i = 0; i < files.length; i++) {// 解析xml一個文件// System.out.println(files[i].getName());SAXReader reader = new SAXReader();Document doc = reader.read(files[i]);// 拿到 class結點Element root = doc.getRootElement();MapperData mapperData = new MapperData();// 保存實體類名mapperData.setClassName(root.attributeValue("name")); // 保存數據表名mapperData.setTableName(root.attributeValue("table"));MapperId mapperId = new MapperId();// 主鍵結點映射關系Element primaryKey = root.element("id");// 實體類主鍵mapperId.setIdName(primaryKey.attributeValue("name"));// 表的主鍵mapperId.setIdColumn(primaryKey.attributeValue("column"));// 序列名稱mapperId.setSeqName(primaryKey.elementText("sequence"));// 保存主鍵結點映射關系mapperData.setMapperId(mapperId);@SuppressWarnings("unchecked")// 所有 實體屬性-表名結點映射關系List<Element> property = root.elements("property");LinkedHashMap<String, String> lhm = new LinkedHashMap<String, String>();for (Element field : property) {lhm.put(field.attributeValue("name"), field.attributeValue("column"));}mapperData.setProperties(lhm);// 把實體類 與 xml中的映射數據一一對應map.put(root.attributeValue("name"), mapperData);}} catch (Exception e) {e.printStackTrace();}}static {// 加載沒有配置文件的實體類 try {Class<?> c = BaseDao.class;// mapper下的路徑String path = c.getResource("/com/lovely/entity").getFile();File file = new File(path);File[] files = file.listFiles();for (int i = 0; i < files.length; i++) {String fileName = files[i].getName();String className = "com.lovely.entity." + fileName.substring(0, fileName.indexOf("."));// 沒有映射文件的解析 對于數據庫表名,字段,順序 和 實體的類名 字段 順序一樣。if (!map.containsKey(className)) {// 實體類的類型描述Class<?> cc = Class.forName(className);MapperData value = new MapperData();// 設置實體類名和表名value.setClassName(cc.getName());value.setTableName(cc.getSimpleName());Field[] fields = cc.getDeclaredFields();Field.setAccessible(fields, true);// 拿到主鍵String primaryKeyName = fields[0].getName();MapperId mapperId = new MapperId();mapperId.setIdName(primaryKeyName);mapperId.setIdColumn(primaryKeyName);mapperId.setSeqName("seq_" + cc.getSimpleName());// 屬性 主鍵列名 序列名value.setMapperId(mapperId);LinkedHashMap<String, String> properties = new LinkedHashMap<String, String>();// 設置除主鍵意外的屬性for (int j = 1; j < fields.length; j++) {properties.put(fields[j].getName(), fields[j].getName());}value.setProperties(properties);map.put(className, value);}}} catch(Exception e) {e.printStackTrace();}}public static void main(String[] args) {System.out.println(map);}public static Connection getConn() {Connection conn = null;String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";try {conn = DriverManager.getConnection(url, "scott", "scott");} catch (SQLException e) {e.printStackTrace();}return conn;}public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs) {try {if (rs != null)rs.close();if (ps != null)ps.close();if (conn != null)conn.close();} catch (SQLException e) {e.printStackTrace();}} }

4. 寫dao時根據反射和map生成sql語句,拿到屬性值

  • curd實現
package com.lovely.dao;import java.lang.reflect.Field; import java.sql.*; import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; import java.util.Map.Entry; import java.util.Set;import com.lovely.base.MapperData; import com.lovely.base.MapperId;/*** * @author echo lovely* * 萬能增刪改查**/ public class CommonDao {public int save(Object entity) {int count = -1;Class<?> c = entity.getClass();MapperData mapperData = BaseDao.map.get(c.getName());StringBuffer sql = new StringBuffer();sql.append("insert into ");sql.append(mapperData.getTableName() + " values (");// insert into tableName values (seq_table.nextval, ?, ?, ?...)sql.append(mapperData.getMapperId().getSeqName() + ".nextval");LinkedHashMap<String,String> properties = mapperData.getProperties();Set<String> keySet = properties.keySet();// 除主鍵外的 實體屬性名for (int i = 0; i < keySet.size(); i++) {sql.append(", ?");}sql.append(")");System.out.println(sql);Connection conn = BaseDao.getConn();PreparedStatement ps = null;try {ps = conn.prepareStatement(sql.toString());// 設置參數的值// 取實體列int index = 1;for (String entityColumn : keySet) {// 反射根據屬性名稱拿值Field field = c.getDeclaredField(entityColumn);field.setAccessible(true);ps.setObject(index, field.get(entity));index ++;}count = ps.executeUpdate();} catch (Exception e) {e.printStackTrace();} finally {BaseDao.closeAll(conn, ps, null);}return count;}public List<Object> queryAll(Class<?> c) {List<Object> list = new ArrayList<Object>();// 拿到 實體類 與 表的列 映射關系MapperData mapperData = BaseDao.map.get(c.getName());String sql = "select * from " + mapperData.getTableName();Connection conn = BaseDao.getConn();PreparedStatement ps = null;ResultSet rs = null;LinkedHashMap<String, String> properties = mapperData.getProperties();try {ps = conn.prepareStatement(sql);rs = ps.executeQuery();// 表主鍵列名String primaryKeyName = mapperData.getMapperId().getIdColumn();String idName = mapperData.getMapperId().getIdName();while (rs.next()) {Object entity = c.newInstance();Object primaryKeyValue = rs.getObject(primaryKeyName); // 主鍵屬性Field primaryFiled = c.getDeclaredField(idName);if (primaryFiled.getType() == Integer.class)primaryKeyValue = rs.getInt(primaryKeyName);primaryFiled.setAccessible(true);primaryFiled.set(entity, primaryKeyValue);Set<Entry<String,String>> entrySet = properties.entrySet();for (Entry<String, String> entry : entrySet) {// 屬性名稱String filedName = entry.getKey();// 表的列名String columnName = entry.getValue();Object attributValue = rs.getObject(columnName);// System.out.println(filedName + "\t" + columnName + "...");// 除主鍵外的屬性對象Field f = c.getDeclaredField(filedName);if (f.getType() == Double.class) {attributValue = rs.getDouble(columnName);} else if (f.getType() == java.sql.Timestamp.class) {attributValue = rs.getTimestamp(columnName);}f.setAccessible(true);f.set(entity, attributValue);}list.add(entity); }} catch (Exception e) {e.printStackTrace();} finally {BaseDao.closeAll(conn, ps, rs);}return list;}public Object queryOne(Object obj) {Object entity = null;Class<?> c = obj.getClass();MapperData mapperData = BaseDao.map.get(c.getName());String sql = "select * from " + mapperData.getTableName() + " where " + mapperData.getMapperId().getIdColumn() + " = ?";System.out.println(sql);Connection conn = BaseDao.getConn();PreparedStatement ps = null;ResultSet rs = null;try {MapperId mapperId = mapperData.getMapperId();ps = conn.prepareStatement(sql);// 拿到主鍵屬性對象Field field = c.getDeclaredField(mapperId.getIdName());field.setAccessible(true);ps.setObject(1, field.get(obj));rs = ps.executeQuery(); LinkedHashMap<String,String> properties = mapperData.getProperties();Set<Entry<String, String>> entrySet = properties.entrySet();if (rs.next()) {// 記得反射創建對象...entity = c.newInstance();Field idFiled = c.getDeclaredField(mapperId.getIdName());idFiled.setAccessible(true);// 取到主鍵值Object idColumn = rs.getObject(mapperId.getIdColumn());System.out.println(idColumn + "\t" + mapperId.getIdName() + "\t" + mapperId.getIdColumn());if (idFiled.getType() == Integer.class) {idColumn = rs.getInt(mapperId.getIdColumn());} idFiled.set(entity, idColumn);for (Entry<String, String> entry : entrySet) {Field f1 = c.getDeclaredField(entry.getKey());f1.setAccessible(true);Object value = rs.getObject(entry.getValue());if (f1.getType() == Double.class)value = rs.getDouble(entry.getValue());else if (f1.getType() == Timestamp.class) {value = rs.getTimestamp(entry.getValue());}f1.set(entity, value); }}} catch (Exception e) {e.printStackTrace();} finally {BaseDao.closeAll(conn, ps, rs);}return entity;}public int update(Object entity) {int count = -1;Class<?> c = entity.getClass();StringBuffer sql = new StringBuffer();// 根據類的全路徑 拿到MapperDataMapperData mapperData = BaseDao.map.get(c.getName());// update tabName set * = ?, * = ?, * = ? .... where id = ?sql.append("update " + mapperData.getTableName() + " set ");LinkedHashMap<String,String> properties = mapperData.getProperties();// 除了主鍵外的所有屬性集合Set<String> keySet = properties.keySet();// 數據庫中表 列的集合Collection<String> cloumnNames = properties.values();int cloumnSize = cloumnNames.size();int index = 0;for (String cloumnName : cloumnNames) {if (index < cloumnSize - 1) sql.append(cloumnName + " = ?, ");else sql.append(cloumnName + " = ?");index ++; }sql.append(" where " + mapperData.getMapperId().getIdColumn() + " = ?");System.out.println(sql);Connection conn = BaseDao.getConn();PreparedStatement ps = null;try {ps = conn.prepareStatement(sql.toString());int paramIndex = 1;for (String fieldAttribute : keySet) {// 映射的鍵 -> 實體屬性對象Field field = c.getDeclaredField(fieldAttribute);field.setAccessible(true);Object obj = field.get(entity);ps.setObject(paramIndex, obj);paramIndex ++;}// 主鍵屬性Field field = c.getDeclaredField(mapperData.getMapperId().getIdName());field.setAccessible(true);ps.setObject(paramIndex, field.get(entity));count = ps.executeUpdate();} catch (Exception e) {e.printStackTrace();} finally {BaseDao.closeAll(conn, ps, null);}return count;}public int delete(Object obj) {int count = -1;Class<?> c = obj.getClass();MapperData mapperData = BaseDao.map.get(c.getName());MapperId mapperId = mapperData.getMapperId();String sql = "delete from " + mapperData.getTableName() + " where " + mapperId.getIdColumn() + " = ?";Connection conn = BaseDao.getConn();PreparedStatement ps = null;try {ps = conn.prepareStatement(sql);// 反射拿到實體類 主鍵屬性對象Field field = c.getDeclaredField(mapperId.getIdName());field.setAccessible(true);// 根據屬性對象 取到 該對象的屬性值ps.setObject(1, field.get(obj));count = ps.executeUpdate();} catch (Exception e) {e.printStackTrace();} finally {BaseDao.closeAll(conn, ps, null);}return count; }}

測試

  • 一句代碼搞定查詢。。。
package com.lovely.test;import com.lovely.dao.CommonDao; import com.lovely.entity.Student; import com.lovely.entity.Ticket;public class Test1 {public static void main(String[] args) {CommonDao dao = new CommonDao();// 學生類的結構和表的結構一樣System.out.println(dao.queryAll(Studdent.getClass()));// 配置了xml映射關系的System.out.println(dao.queryAll(Ticket.class));}} [Student [sid=46, sname=jack, sgender=male, sbirth=2020-07-02 20:24:01.0, saddress=null, sinfo=null] ] [Ticket [tid=2, tname=花木蘭, tprice=33.2] , Ticket [tid=3, tname=阿凡達2, tprice=50.5] ]

總結

以上是生活随笔為你收集整理的利用反射和xml配置文件手写一个小型的框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

成年人免费在线 | av中文字幕网站 | 综合国产在线观看 | 在线欧美日韩 | 国产精品6 | 九九久久精品视频 | 午夜色影院 | 天天草天天干天天射 | 麻豆传媒视频在线 | 亚洲国产片 | 久久久精品网站 | 在线免费视 | 国产视频一 | 久久精品亚洲一区二区三区观看模式 | 免费亚洲成人 | 亚洲美女精品区人人人人 | 波多野结衣在线视频免费观看 | 五月婷婷激情网 | 国内精品美女在线观看 | 国产成人一区二区三区在线观看 | 特黄特黄的视频 | 久久久久久久久久久影院 | 国产一区二区在线观看免费 | 国产视频网站在线观看 | 天天操 夜夜操 | 国产区久久 | 免费看的黄网站 | 免费在线黄色av | 又黄又爽又刺激视频 | 欧美国产日韩一区二区三区 | 国产在线观看二区 | 精品色999| 成人看片| 国外av在线 | 免费精品国产va自在自线 | 日韩欧美高清一区二区 | 99激情网| 免费成人在线电影 | 99视频在线免费播放 | 精品一区电影国产 | 五月婷婷香蕉 | 久久成人麻豆午夜电影 | 美女视频黄在线 | 国产精品少妇 | 99久久99视频只有精品 | 国产精品乱码久久 | 久久99精品久久久久久秒播蜜臀 | 亚洲毛片视频 | 国产黄色视| 中文字幕在线中文 | av高清一区二区三区 | 在线观看av网站 | 成人av一区二区兰花在线播放 | 黄网站色成年免费观看 | 欧美日韩免费一区二区三区 | 欧美性黑人 | 9999毛片| www.亚洲黄 | 亚洲国产免费看 | 欧女人精69xxxxxx | 天天曰天天射 | 免费视频久久久久久久 | 国产成人精品区 | 欧美不卡视频在线 | 久久视频这里有久久精品视频11 | 成人精品影视 | 丁香激情综合久久伊人久久 | 天天操狠狠操夜夜操 | 欧美成人69av | 久久99中文字幕 | 成人性生交大片免费看中文网站 | 亚洲一区久久 | 五月的婷婷 | 成人av网站在线观看 | 日本精品在线看 | 日韩色在线观看 | 欧美精品亚洲精品 | 99热这里只有精品1 av中文字幕日韩 | 国产精品永久免费视频 | 99热 精品在线 | 日韩理论片在线 | 欧美福利视频一区 | 黄色大全免费观看 | 婷婷视频导航 | 久草视频在线新免费 | 在线亚州 | 亚洲视频www | 久久在线看 | 激情综合国产 | 日韩在线免费不卡 | 人人玩人人弄 | 69国产成人综合久久精品欧美 | 黄色激情网址 | 亚州av网站大全 | 久久精品男人的天堂 | 欧美不卡在线 | 中文字幕亚洲不卡 | 丁香六月欧美 | 97福利在线观看 | 亚洲激情综合网 | 青青河边草观看完整版高清 | 黄av免费| 久久精品视频在线免费观看 | 91看片在线看片 | 激情av资源网 | 国产美腿白丝袜足在线av | 亚洲高清视频在线播放 | 国产成人亚洲精品自产在线 | 久久久久久久久久久免费 | 蜜桃视频在线观看一区 | 久久久久成人精品 | 成人av资源网 | 91视频这里只有精品 | 天天夜夜操 | 国产黄av | 中国成人一区 | 一区二区中文字幕在线 | 免费观看成人网 | 色综合色综合久久综合频道88 | 精品国产一区二区三区不卡 | 97超级碰碰碰视频在线观看 | 91自拍视频在线观看 | av日韩国产 | 黄色三级在线看 | 欧美成人aa| 欧美精品久久久久久久久老牛影院 | 久久久久久激情 | 中文字幕在线免费观看 | 午夜久久久久久久 | avav99| 国产一级一片免费播放放a 一区二区三区国产欧美 | 亚洲黄色av网址 | 国内精品视频在线 | 美女久久 | 色久五月 | 99视频免费在线观看 | 成人av片在线观看 | 日韩av免费大片 | 国产不卡高清 | 成 人 黄 色 视频 免费观看 | 国产精品精品国产 | 欧美地下肉体性派对 | 亚洲精品久久久蜜桃直播 | 日韩欧美一区二区三区视频 | 99久热在线精品 | 丰满少妇高潮在线观看 | 国内精品久久久久久中文字幕 | 激情久久久久 | 成人久久精品视频 | 人人干天天射 | 国产精品一区二区在线免费观看 | 日日操网站 | 国产精品免费大片视频 | 91精品视频一区二区三区 | 人人干人人超 | 亚洲黄色免费 | 日韩精品电影在线播放 | 伊香蕉大综综综合久久啪 | 天堂中文在线视频 | 日韩成人不卡 | 黄色的视频 | 国产精品白丝jk白祙 | 欧美精品久久久久性色 | 久久精品综合 | 日韩一二区在线 | 激情婷婷欧美 | 日日夜夜天天综合 | 色在线高清 | 玖玖在线看 | 国产成人精品一区一区一区 | 日韩在线色| 久久久久99精品国产片 | 免费在线观看毛片网站 | 91丨九色丨高潮 | 婷婷精品国产欧美精品亚洲人人爽 | 麻花豆传媒mv在线观看网站 | 高清av网站| 成人网中文字幕 | 91九色在线播放 | www.国产在线视频 | 精品国产欧美一区二区 | 国产中文字幕视频在线观看 | 日韩高清dvd | 国产精品自在欧美一区 | 91麻豆文化传媒在线观看 | 91大神在线看 | 一区视频在线 | 日韩高清免费无专码区 | 中文字幕在线观看不卡 | 天天曰视频 | 国产亚洲精品久久久久久久久久 | 91人人揉日日捏人人看 | 欧美aaa一级| 日韩大片在线看 | 国产成人黄色 | 久久涩视频 | 91视频在线自拍 | 在线观看视频黄 | 色在线观看网站 | 中文久草| 久久免费视频国产 | 美女在线观看网站 | 免费看的av片 | 国产成人精品av在线观 | 91传媒在线播放 | 韩日精品中文字幕 | 超碰在线公开免费 | 97在线观看免费视频 | 日韩欧美xxx | 黄网站色欧美视频 | 国产视频在线免费 | 免费看三级网站 | 精品一区二区av | 999在线视频 | 欧美激情视频一区二区三区免费 | 六月丁香综合网 | 黄污视频网站 | 欧洲精品视频一区 | 亚洲第一香蕉视频 | 久久久精品免费观看 | 九九热精品视频在线观看 | 亚洲国产精品传媒在线观看 | 久久久国际精品 | 一区二区三区精品在线 | 99tvdz@gmail.com| 国产成人精品av久久 | 久久一精品| 五月婷久 | 久久综合激情 | 99久久婷婷国产 | 成人网页在线免费观看 | av怡红院| 视频99爱| 久久99精品波多结衣一区 | 二区三区在线 | www.天堂av| 99久久久久免费精品国产 | 热久久电影| 国产精品1区2区在线观看 | 天天操天天能 | 88av视频| 日韩在线观看视频网站 | 日韩一区二区三区观看 | 精品久久久久一区二区国产 | 18久久久久| 六月激情久久 | 欧美午夜一区二区福利视频 | 91免费网| av电影在线观看完整版一区二区 | 国产免费美女 | 免费看麻豆 | 色婷婷国产在线 | 国产精选视频 | 天天弄天天操 | 欧美一级免费片 | 天天干天天干天天干天天干天天干天天干 | 久精品在线 | 蜜桃av综合网 | 久久精品资源 | 国产黄a三级三级三级三级三级 | 91成人精品视频 | 精品一二三四在线 | 国产热re99久久6国产精品 | 激情大尺度视频 | 最近中文字幕mv免费高清在线 | 久久免费99精品久久久久久 | 国产成人三级一区二区在线观看一 | 亚洲成人高清在线 | 亚洲精品在线观看av | 91成人精品一区在线播放69 | 在线播放一区 | 激情大尺度视频 | 精品视频www | 中文字幕国内精品 | 欧美日韩中文字幕综合视频 | 国产精品久久久久久久久蜜臀 | 欧美日韩性 | 国产黄大片在线观看 | 久草影视在线 | 久久久久 | 伊人五月天 | 成人黄在线 | 国产一区二区在线视频观看 | 最新国产精品视频 | 日韩免费av网址 | 99视频在线免费看 | 99久久精品久久亚洲精品 | www免费视频com━ | 国产亚洲精品精品精品 | 免费在线观看av电影 | 99久久久国产精品免费99 | 99精品国产免费久久久久久下载 | 免费看特级毛片 | 久久免费观看少妇a级毛片 久久久久成人免费 | 激情小说网站亚洲综合网 | caobi视频 | 九色最新网址 | 精品视频在线看 | 色噜噜色噜噜 | 天天操天天操天天操 | 91视频3p| 综合国产在线观看 | 久草免费在线 | 国产一区二区成人 | 久久精品综合一区 | 久久久久免费观看 | 91成人精品在线 | 久草在线资源免费 | 黄色小视频在线观看免费 | 在线视频观看成人 | 免费在线观看视频一区 | 91看片淫黄大片在线播放 | 蜜臀av网址 | 亚洲成av人片在线观看香蕉 | 狠狠干网站 | 黄色福利视频网站 | 午夜三级毛片 | 欧美成人黄| 中文字幕的 | 国产免费午夜 | 天天综合导航 | 日韩欧美69 | 东方av免费在线观看 | 精品久久久久久久久久久久久 | 最近2019中文免费高清视频观看www99 | 日韩精品在线播放 | 在线免费国产 | 国产精品免费在线观看视频 | 国产一区二区三区网站 | 在线观看日韩精品视频 | 97韩国电影| 人人澡人人爽 | 欧美日韩国产色综合一二三四 | av短片在线观看 | 国产精品欧美久久 | 中文字幕在线第一页 | 91欧美视频网站 | 黄色软件在线看 | 欧美视频在线二区 | 在线播放av网址 | 色www.| 成人黄色小说在线观看 | www日日| 麻花天美星空视频 | 亚洲成色777777在线观看影院 | 黄色a视频免费 | 久久久蜜桃 | 99视频久| 成人97视频一区二区 | 国产美女精品视频 | www.福利| 日本性久久| 久久久精品高清 | 久久香蕉国产精品麻豆粉嫩av | 亚洲第一色 | 玖玖精品在线 | 日韩激情影院 | 久久精品一区二区国产 | 又黄又刺激又爽的视频 | 欧美专区日韩专区 | 久久er99热精品一区二区 | 91伊人| 在线观看免费高清视频大全追剧 | 色无五月| 欧美影院久久 | 日韩理论| 美女激情影院 | 天天操人| 精品久久久久久综合 | 四虎视频 | 国产男女爽爽爽免费视频 | 日韩中文字幕免费在线播放 | 免费中文字幕 | 免费视频久久久 | 亚洲欧美在线观看视频 | 国产成人av | 久久久免费观看完整版 | 欧美精品第一 | 91av视频在线观看免费 | 日韩欧美在线一区二区 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 日韩av影视 | 免费成人av | 久久经典国产 | 色综合久久久久久久久五月 | 亚洲精品国产精品乱码在线观看 | 国产精品无 | 视频二区在线视频 | 日本黄色a级大片 | 亚洲午夜精品久久久久久久久久久久 | 久久夜色精品国产欧美乱极品 | 亚洲一区在线看 | 久久久精品成人 | 国产精品久久久久影院 | 激情网站网址 | 在线观看激情av | 亚洲精品视频在线播放 | 午夜免费久久看 | 能在线观看的日韩av | 国产精品久久久久久爽爽爽 | 午夜在线免费观看 | 亚洲美女视频在线 | 99精品久久只有精品 | 日日天天av| 午夜精品久久久久久久99水蜜桃 | 九色视频网 | 亚洲欧美激情精品一区二区 | 91精品视频网站 | 日韩色爱| 狠狠操天天干 | 成年人视频在线免费播放 | 久久久官网 | 日韩三级中文字幕 | 国产成人免费在线观看 | 亚洲一级电影在线观看 | 免费色视频在线 | 久久天天躁狠狠躁夜夜不卡公司 | 天天射天天操天天干 | 永久免费毛片在线观看 | 青青草久草在线 | 欧美日韩一级久久久久久免费看 | 欧美一级艳片视频免费观看 | 亚洲色图美腿丝袜 | 久久超级碰 | 99久在线精品99re8热视频 | 国产精品videoxxxx | www.五月婷婷 | 亚洲精品国产精品国自产观看 | 日日爽 | 一区二区三区在线不卡 | 超碰官网| 欧美日韩不卡在线 | 免费韩国av | 久久草视频| 在线观看蜜桃视频 | 一区二区三区福利 | 一区二区三区四区免费视频 | 香蕉在线视频观看 | 韩国av一区二区三区 | 天堂av一区二区 | 国产在线观看你懂的 | 日韩在线观看视频在线 | 亚洲精品1区2区3区 超碰成人网 | 色婷婷电影网 | 国产小视频你懂的 | 日韩av黄| 天天射天天干 | 射九九| 91在线文字幕 | 国产精品18videosex性欧美 | 色综合久久精品 | 三级动图 | 精品国产乱码久久久久久1区二区 | 人人涩 | 视频一区视频二区在线观看 | 最近中文字幕mv免费高清在线 | 日韩精品中文字幕av | 中文字幕在线观看av | 黄免费网站 | 欧美男女爱爱视频 | 成人一区二区三区中文字幕 | 九九亚洲精品 | 欧美日韩在线观看一区 | 在线精品视频免费播放 | 国产精品专区在线观看 | 色噜噜狠狠狠狠色综合 | 99热这里精品 | 日日躁夜夜躁aaaaxxxx | 亚洲国产资源 | 最近中文字幕免费 | 麻豆精品国产传媒 | 特级黄色片免费看 | 久久久99精品免费观看乱色 | 精品国产91亚洲一区二区三区www | 91精品在线播放 | 夜夜嗨av色一区二区不卡 | 久久视频免费在线观看 | 欧美视频不卡 | 国产视频在线观看一区二区 | 成人一级电影在线观看 | 一区二区三区在线免费播放 | 99视频精品全国免费 | www黄色com| 最近2019好看的中文字幕免费 | 91免费日韩 | 在线视频 你懂得 | 中文有码在线视频 | 99热这里有 | 国产精品久久久久久久妇 | 久久久久久久久久福利 | 在线精品观看 | 黄污在线看 | 亚洲国产精选 | 欧美日韩视频免费 | 久久婷婷国产色一区二区三区 | 成人免费视频播放 | 狠狠色丁香婷婷综合久小说久 | 91成年人视频 | 久久精品伊人 | 成人免费观看大片 | 毛片视频网址 | 91完整版观看| av丁香花| 日韩免费视频播放 | 久久成人精品 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 国内精品中文字幕 | 五月婷婷丁香六月 | 中文字幕久久精品 | 天天操天天干天天干 | japanesexxxhd奶水 91在线精品一区二区 | 中文字幕在线观看不卡 | 美女精品国产 | 免费日韩视| 久久99久久99免费视频 | h视频在线看 | 欧美a√大片 | 亚洲成av人片在线观看 | 九九精品无码 | 97超碰在线免费观看 | 激情五月在线视频 | 日本久久综合网 | 国产精品视频99 | 97免费 | 中文字幕精品久久 | 久久99视频免费观看 | 97碰碰视频 | 亚洲成成品网站 | 天天爱天天射天天干天天 | 久久国产精品小视频 | 国产精品va| 精品福利网站 | 97精品视频在线 | 一区二区三区在线影院 | 国产精品大片 | 一区二区三区中文字幕在线观看 | 久久久久久久久久久久影院 | 日韩一区二区三区视频在线 | 色婷婷综合久久久久中文字幕1 | 色在线国产 | 久久久久久国产精品999 | 亚洲一区二区三区精品在线观看 | 亚洲区视频在线观看 | 丝袜美腿在线视频 | 热99在线 | 2024国产在线 | 欧美人体xx | 亚洲成av人片在线观看www | 日韩高清成人 | 精品久久久免费 | 激情五月婷婷综合网 | 操操操干干干 | 国产一区av在线 | 国产高清精| 黄色片免费电影 | 成人免费视频网站在线观看 | 黄色三级久久 | 特及黄色片 | 日韩在线观看精品 | 99久高清在线观看视频99精品热在线观看视频 | 欧美了一区在线观看 | 99精品视频在线播放免费 | 欧美少妇的秘密 | 欧美激情视频在线观看免费 | 日韩在线第一 | 久久a免费视频 | 97超视频 | 国产综合在线观看视频 | 欧美一区二区三区在线观看 | 亚洲精品国| 国产高清福利在线 | 久草在线一免费新视频 | 欧美极品一区二区三区 | 久久久久女人精品毛片九一 | 处女av在线 | 91自拍视频在线 | 99爱精品在线 | 在线观看免费中文字幕 | 亚洲精品国精品久久99热 | 91av电影在线观看 | 91在线视频免费91 | 日韩中文字幕第一页 | 欧美午夜视频在线 | 日本天天操 | 亚洲 欧美 日韩 综合 | 婷婷在线观看视频 | 在线视频a | av三级在线看 | 亚洲观看黄色网 | 亚洲高清视频在线观看免费 | 国产a级精品| 久草视频2| 在线观看免费视频 | av一区二区在线观看中文字幕 | 国产免费黄视频在线观看 | 久久综合久久综合久久 | 亚洲国产成人久久 | 91麻豆精品一区二区三区 | 成人久久久久久久久久 | 成人免费网站在线观看 | 婷婷色av | 日本中文在线播放 | 久久久久久免费网 | 久久99精品热在线观看 | 在线观看韩国av | 91探花在线 | 亚洲午夜不卡 | 97小视频 | 在线观看成年人 | 五月天婷婷狠狠 | 国产精品扒开做爽爽的视频 | 国产精品嫩草影视久久久 | 国产精品毛片完整版 | 中国一级特黄毛片大片久久 | 在线 高清 中文字幕 | 亚洲91中文字幕无线码三区 | 视频一区在线播放 | 成人黄色小说在线观看 | 在线观看黄色大片 | 成人一区二区在线 | 国产日韩在线看 | 午夜国产一区二区三区四区 | 日韩高清精品免费观看 | 麻豆精品传媒视频 | 国产精品久久网 | 91成年人视频 | 天天天色 | 色婷婷99 | 久草在线资源观看 | 亚洲 欧美 变态 国产 另类 | 国产又粗又硬又爽视频 | 免费av免费观看 | 在线观看黄色免费视频 | 天天摸天天舔 | 亚洲国产手机在线 | 看黄色91 | 国产区精品在线观看 | 最新精品视频在线 | 日本精品视频免费观看 | 91精品亚洲影视在线观看 | 免费看国产视频 | 久久婷婷视频 | 超碰在线观看av.com | 国产精品久久久久永久免费观看 | 97香蕉超级碰碰久久免费软件 | 亚洲精品黄网站 | 在线国产一区二区三区 | 久久国产精品视频 | 黄色福利视频网站 | 欧美男女爱爱视频 | 少妇视频一区 | 中文字幕一区在线 | 制服丝袜在线 | 欧美精品视 | 人人爽人人澡 | 97看片吧 | 91在线永久 | 国产中文字幕大全 | 最新亚洲视频 | 91九色网址 | 国产成人福利片 | 国产精品免费久久久久影院仙踪林 | 免费av免费观看 | 五月激情在线 | 黄色小说免费在线观看 | 成人一区二区三区中文字幕 | 午夜色影院 | 午夜免费在线观看 | 日本精品一 | 九九免费精品视频在线观看 | 色综合久久中文字幕综合网 | 日韩精品一区二区三区免费观看视频 | 在线观看视频一区二区 | 午夜美女网站 | 色的网站在线观看 | a成人v在线| 九九一级片 | 激情五月***国产精品 | sesese图片| 成人午夜网 | 国产黑丝一区二区三区 | 久久这里 | 高清不卡一区二区在线 | 免费日韩高清 | 手机看片中文字幕 | 免费a级大片 | 成人免费观看在线视频 | 99热最新在线 | 亚洲在线精品视频 | 国产黄色精品在线 | 久草在线在线 | 天天操天天干天天爱 | 精品在线视频播放 | 欧美性生活一级片 | 国产午夜精品久久久久久久久久 | 欧美精品久久天天躁 | 色综合久久88 | 91麻豆网站 | 一区三区视频在线观看 | 免费的黄色av | 丁香婷婷综合激情五月色 | 国产成人av电影在线 | 亚洲 av网站| 99久久精品国产亚洲 | 91免费的视频在线播放 | 91综合在线| 99久久精品国产毛片 | 麻豆视频在线免费观看 | 成人在线免费小视频 | 亚洲欧美成人综合 | 亚洲成人国产精品 | 久久精品一区二区三区国产主播 | 亚洲动漫在线观看 | 最新色站| 99视频免费看 | 精品1区2区 | 日韩精品一区二区三区不卡 | 中文字幕xxxx| 99久久夜色精品国产亚洲 | 一区二区三区免费在线播放 | 国产特级毛片aaaaaa高清 | 91香蕉亚洲精品 | 狠狠狠狠狠狠狠狠干 | 免费观看av网站 | 人人澡人人添人人爽一区二区 | 国产免费成人 | 欧美十八| 国产伦理久久 | 久草干 | 国产精品成人免费精品自在线观看 | 五月激情丁香婷婷 | 精品人妖videos欧美人妖 | 欧美伦理一区 | 久久综合给合久久狠狠色 | 国产精品一区二区62 | 国产 视频 高清 免费 | 六月丁香激情网 | 亚州av网站 | 三级av网| 91av影视| 国产日韩视频在线观看 | 久久激情小视频 | 亚洲成av人影院 | 视频一区亚洲 | 91av片| 国产免费久久精品 | 久久精品久久久精品美女 | 波多野结衣最新 | 中文字幕在线观看不卡 | 日韩欧美一区二区在线 | 免费在线国产黄色 | 国产又粗又长的视频 | 国产精品一区二区三区四 | 国产成人精品久久二区二区 | 免费看三级 | 天天做日日做天天爽视频免费 | 人人澡人人舔 | 西西4444www大胆视频 | 中文字幕在线观看网址 | 久久这里只有精品首页 | 色综合久久五月 | 天天色图| 9久久精品 | www好男人 | 婷婷五综合 | 亚洲日本色 | 一区二区精品在线视频 | 国产高清视频在线 | 久久久首页 | 依人成人综合网 | 九九热精| 午夜美女av| 亚洲成av人片在线观看 | 亚州精品在线视频 | 亚洲午夜大片 | 国产精品视频一二三 | 天天色综合久久 | 最新一区二区三区 | 一本一本久久a久久精品综合小说 | 国产精品video爽爽爽爽 | 91视频免费看网站 | 国产 视频 高清 免费 | 亚洲精品国偷拍自产在线观看 | av成人免费网站 | 日韩大片在线 | 久久免费视频这里只有精品 | 亚洲精品久久在线 | 黄色成品视频 | 日韩久久视频 | 天天插天天狠天天透 | 久久美女电影 | 97精品国产97久久久久久 | 中文亚洲欧美日韩 | 911久久| 免费av试看 | 国产高清视频免费在线观看 | 在线免费视频一区 | 久久视奸 | 国产国语在线 | 国产不卡网站 | 国产91影视 | 啪一啪在线 | 欧美福利视频一区 | 日本久久久久久久久久久 | 麻豆91精品 | 九九色在线 | 久久久久久久国产精品影院 | 精品国产伦一区二区三区免费 | 国产午夜不卡 | 在线观看一二三区 | 国产精品视频永久免费播放 | 97精品国自产拍在线观看 | 亚洲精品美女久久 | 国产在线91在线电影 | 免费看搞黄视频网站 | 男女拍拍免费视频 | 激情一区二区三区欧美 | 久久久久久久99精品免费观看 | 伊人中文字幕在线 | 久久综合毛片 | 日韩av三区| 国产成人精品三级 | 亚洲视频精品在线 | 久久综合九色欧美综合狠狠 | 亚洲综合视频在线播放 | 中文字幕在线观看完整版电影 | 国产午夜激情视频 | 久久久久久久久电影 | 久久久高清免费视频 | 国产三级视频在线 | 91pony九色丨交换 | 日韩av在线不卡 | 天天插狠狠干 | 天天干天天射天天插 | 中文字幕在线观看国产 | 一区二区三区四区精品视频 | 视频在线亚洲 | 麻豆视频免费入口 | 欧美一区二区三区激情视频 | 国产黄色特级片 | 五月综合激情婷婷 | 香蕉视频91| 夜夜爽www| 狠狠干网站| 久久国产精品一二三区 | 在线天堂v| 狠狠色丁香久久婷婷综合五月 | 亚洲天天摸日日摸天天欢 | 欧美片一区二区三区 | 亚洲婷久久 | 久久国产精品久久精品国产演员表 | 亚洲精品色| 天天色综合天天 | 国产色视频一区二区三区qq号 | 亚洲理论电影网 | 美国人与动物xxxx | 国内精品久久久久影院男同志 | 久久精品爱视频 | 色999视频 | 久操视频在线免费看 | 成人午夜黄色影院 | 黄色福利| 成人在线超碰 | 亚洲理论视频 | 91丨九色丨高潮丰满 | 国产在线色 | 久久国产精品99久久久久久老狼 | 区一区二区三区中文字幕 | 久久久久欠精品国产毛片国产毛生 | www.亚洲精品 | 欧美精品久久久久久 | 91在线中字 | 日日色综合 | 日韩城人在线 | 亚洲精品网站在线 | 激情自拍av | 在线观看视频你懂 | 激情片av| 日韩在线影视 | 天天干天天玩天天操 | www.97色.com | 国产视频中文字幕在线观看 | 欧美一级裸体视频 | 午夜18视频在线观看 | 国产专区在线播放 | 一本—道久久a久久精品蜜桃 | 久久精品日韩 | 成人一级免费电影 | 福利视频午夜 | 99久久精品国产毛片 | 国产精品福利午夜在线观看 | 欧美激情另类文学 | 色a网| 国产一区二区高清 | 日韩精品一区在线观看 | 人人讲| 亚洲一区美女视频在线观看免费 | 日韩国产欧美在线播放 | 在线看av网址| 综合精品久久 | 操老逼免费视频 | 天天射天天 | 91亚洲精品久久久蜜桃 | 美女视频黄是免费的 | 在线精品视频免费播放 | 国产手机av在线 | 欧美成人区 | 色综合天天色综合 | 国产午夜影院 | 久久精品国产精品亚洲精品 | 97成人超碰| 在线观看日韩av | 国产精品一码二码三码在线 | 国产免费大片 | 五月天久久精品 | 亚洲欧美在线视频免费 | 夜夜视频资源 | 久久国产精品免费看 | 欧美色精品天天在线观看视频 | 天天操天天摸天天爽 | 免费观看91视频大全 | 欧美色久 | 在线观看亚洲免费视频 | 精品福利网 | 香蕉精品在线观看 | 色噜噜噜 | 996久久国产精品线观看 | 99视频精品视频高清免费 | 丁香六月色 | 日韩一区二区三区在线看 | 91麻豆高清视频 | 在线观看av免费观看 | 成人av直播 | 五月婷婷久久丁香 | 伊香蕉大综综综合久久啪 | 97精品免费视频 | 在线观看免费 | 日韩在线观看一区二区 | 午夜a区 | 日本久久精品 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 国产91免费在线观看 | 成人在线黄色 | 91在线免费公开视频 | 狠狠狠狠狠干 | 久久五月激情 | 久久久天堂 | 国产99免费视频 | a视频免费在线观看 | 日韩一三区| 久久综合九色九九 | 国产精品久久久久久久久久久久冷 | 看片网站黄色 | 国产午夜麻豆影院在线观看 | sm免费xx网站 | 久草视频在线免费播放 | av在线精品 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 久久久久成人精品亚洲国产 | 一区二区三区四区五区在线 | 成人福利av | 久久成人国产精品免费软件 | 韩国精品视频在线观看 | 色中射| 久久久久伊人 | 国产高清视频在线免费观看 | 91精品在线播放 | 中文字幕在线视频一区二区三区 | 又黄又刺激视频 | 伊人宗合网 | 偷拍区另类综合在线 | 国产又黄又猛又粗 | 久草亚洲视频 | 天天干天天搞天天射 | 久久男女视频 | 亚洲天堂精品 | 91亚洲欧美 | 91精品国产99久久久久久红楼 | 国产91免费在线观看 | 久久久久久久久久免费视频 | 99精品视频一区二区 | 色五月激情五月 | 91成品人影院 | 国产精品亚洲片夜色在线 | x99av成人免费| 狠狠网亚洲精品 | 国产精品美 | 狠狠色丁香 | 亚洲精品视频中文字幕 | 午夜av剧场 | 久草在线视频首页 | 91免费版成人 | 久久xxxx | 久久精品麻豆 | 中文字幕影片免费在线观看 | 欧美 日韩 久久 | 国产精品麻豆一区二区三区 | 狠狠网站 |