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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

写一个工具生成数据库实体类

發(fā)布時間:2024/1/17 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 写一个工具生成数据库实体类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

寫一個java工具從數(shù)據(jù)庫生成實(shí)體類

開始寫之前的說明

? 這只是一個簡單的解析數(shù)據(jù)庫建表語句之后,根據(jù)解析結(jié)果生成java文件的一個簡單工具。寫的原因有兩個。

? 1:項(xiàng)目中沒有人寫實(shí)體類的注釋,字段的注釋,現(xiàn)有的工具也沒法根據(jù)數(shù)據(jù)庫的注釋自動添加到class文件上。

? 2:自己寫一個也似乎不是很難。

? 所以就自己寫了一個。

這里在生成java文件的時候用的是freemarker。用了jdbc作為執(zhí)行sql的工具。

這個項(xiàng)目已經(jīng)放在github上了,地址:https://github.com/hjx601496320/entityMaker 。

用到的依賴:

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version> </dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version> </dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version> </dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.45</version> </dependency><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version> </dependency>

獲取數(shù)據(jù)庫中的所有的表名稱

想要根據(jù)數(shù)據(jù)庫中的建表語句來創(chuàng)建java文件首先要先知道數(shù)據(jù)庫中都有那些表。so,開始。

配置數(shù)據(jù)庫的相關(guān)信息

在獲取數(shù)據(jù)庫鏈接前,我們先寫一個文件用來保存數(shù)據(jù)庫鏈接的各種信息。

新建文件config.xml

<xml><jdbc.url></jdbc.url><jdbc.username></jdbc.username><jdbc.password></jdbc.password> </xml>

jdbc.url:鏈接數(shù)據(jù)庫的url。例如:jdbc:mysql://127.0.0.1:3306/demo?useSSL=true

jdbc.username:數(shù)據(jù)庫的用戶名。

jdbc.password:數(shù)據(jù)庫的密碼。

這樣就配置好了。

寫一個工具類讀取xml:XmlUtils.java

import org.w3c.dom.Document;import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.Scanner;/*** 讀取xml*/ public class XmlUtils {/*** 讀取 Document** @param xmlPath* @return*/public static Document getConfigDocument(String xmlPath) {try {InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(xmlPath);Scanner scanner = new Scanner(resourceAsStream);StringBuilder stringBuilder = new StringBuilder();while (scanner.hasNextLine()) {stringBuilder.append(scanner.nextLine()).append("\n");}DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();DocumentBuilder documentBuilde = documentBuilderFactory.newDocumentBuilder();Document document = documentBuilde.parse(new ByteArrayInputStream(stringBuilder.toString().getBytes()));return document;} catch (Exception e) {e.printStackTrace();return null;}} }

打開數(shù)據(jù)庫鏈接

//獲取數(shù)據(jù)庫配置信息 Document configXml = XmlUtils.getConfigDocument(CONFIG_PATH); Element element = configXml.getDocumentElement(); String jdbcUrl = element.getElementsByTagName("jdbc.url").item(0).getTextContent(); String username = element.getElementsByTagName("jdbc.username").item(0).getTextContent(); String password = element.getElementsByTagName("jdbc.password").item(0).getTextContent(); //打開數(shù)據(jù)庫鏈接 Connection conn = (Connection) DriverManager.getConnection(jdbcUrl, username, password);

獲取到鏈接之后,下一步就是要讀取數(shù)據(jù)庫中的表數(shù)據(jù)了。

獲取數(shù)據(jù)庫中的表

Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SHOW TABLES;"); while (resultSet.next()) {//這里就獲取到了數(shù)據(jù)庫中的所有的表的名稱了。String tableName = resultSet.getString(1); }

這里拿到表名稱后就可以依次得到建表語句,并解析建表語句了。

這里之所以使用解析建表語句的方法是因?yàn)檫@樣可以比較完整的得到注釋信息。用另一種方法的時候表的注釋一直獲取不到(另一種方法我忘記怎么說了~)。

得到建表語句

這里就是拼接sql,然后執(zhí)行就好了。下面是代碼:

Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("show CREATE TABLE 表名稱"); while (resultSet.next()) {//這里就得到了表的建表語句String createTableSql = resultSet.getString(2); }

做到這一步,我們就完整的得到了數(shù)據(jù)庫中的所有的建表語句了。接下來就是要分析建表語句并且用來生成實(shí)體類了。

建表語句分析

建表sql

下面是執(zhí)行 sql show create table user 的結(jié)果:

CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶id', `name` varchar(225) DEFAULT NULL COMMENT '用戶名', `create_date` datetime DEFAULT NULL, `status` int(11) DEFAULT NULL, `age` int(11) DEFAULT NULL COMMENT '年齡', `mark` varchar(225) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2104778081 DEFAULT CHARSET=latin1 COMMENT='用戶表'

這里可以看出,要創(chuàng)建的實(shí)體類的名稱就在第一行的CREATE TABLE 后的兩個`符號中間,這樣我們就可以通過正則將表的名稱取出來,然后轉(zhuǎn)換成為我們需要的class名稱。首先我們先寫一個通過正則提取數(shù)據(jù)的方法,下面是代碼:

正則代碼

/*** 根據(jù)正則查找** @param sql* @param pattern* @param group* @return*/static String getByPattern(String sql, String pattern, int group) {Pattern compile = Pattern.compile(pattern);Matcher matcher = compile.matcher(sql);while (matcher.find()) {return matcher.group(group);}return null;}

現(xiàn)在開始從建表語句中提取table的名稱(雖然在獲得數(shù)據(jù)庫所有表的時候就已經(jīng)知道了,但是在寫一次也沒有什么問題不是嗎 ~~~),下面是代碼:

獲取表的名稱

/*** 獲得表的名稱** @param sql* @return*/public static String getTableName(String sql) {return getByPattern(sql, "CREATE TABLE `(.*)`", 1);}

這里就已經(jīng)將表的名稱取出來了。
接下來是獲取表上的注釋,這里我們?nèi)”淼淖⑨尅O旅媸谴a:

提取表注釋

public static String getTableComment(String sql) {return getByPattern(sql, "\\) .* COMMENT='(.*)'", 1);}

現(xiàn)在開始獲取id信息。

獲取id

獲取id依然是使用正則就好了,代碼如下:

public static String getId(String sql) {return getByPattern(sql, "PRIMARY KEY \\(`(.*)`\\)", 1); }

因?yàn)樵菊Z句中有一對括號,所以在這里對外面的括號做了轉(zhuǎn)義處理。接下來開始提取數(shù)據(jù)庫中的字段,字段類型,字段注釋。

字段,字段類型,字段注釋

先取出來建表語句中的和字段相關(guān)的sql

2019年01月21日,修改:

沒想到有的表里沒有id,就導(dǎo)致下面的代碼執(zhí)行后出錯了,修改一下結(jié)束的判斷。

/*** 獲取建表語句中和字段相關(guān)的sql** @param sql* @return*/public static List<String> getColumnSqls(String sql) {List<String> lines = new ArrayList<>();Scanner scanner = new Scanner(sql);boolean start = false;while (scanner.hasNextLine()) {String nextLine = scanner.nextLine();if (nextLine.indexOf("CREATE TABLE") != -1) {start = true;continue;}//沒想到有的表沒有id /(ㄒoㄒ)/~~if (nextLine.indexOf("PRIMARY KEY") != -1 || nextLine.indexOf("ENGINE=") != -1) {start = false;continue;}if (start) {lines.add(nextLine);}}return lines;}

這里的運(yùn)行結(jié)果是:

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶id', `name` varchar(225) DEFAULT NULL COMMENT '用戶名', `create_date` datetime DEFAULT NULL, `status` int(11) DEFAULT NULL, `age` int(11) DEFAULT NULL COMMENT '年齡', `mark` varchar(225) DEFAULT NULL,

這也就取到了table中所有的字段相關(guān)信息了,接下來我們來獲取字段名稱:

獲取列名,注釋,數(shù)據(jù)類型

List<String> columns = SqlUtils.getColumnSqls(sql); for (String oneLine : columns) {System.out.println(oneLine);String columnName = SqlUtils.getByPattern(oneLine, "`(.*)`", 1);String comment = SqlUtils.getByPattern(oneLine, "COMMENT '(.*)'", 1);String columnType = SqlUtils.getByPattern(oneLine, "`" + columnName + "` ([A-Za-z]*)", 1);System.out.printf("名稱:%-20s 類型:%-20s 注釋:%-20s \n", columnName, columnType, comment); }

輸出結(jié)果:

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶id', 名稱:id 類型:int 注釋:用戶id `name` varchar(225) DEFAULT NULL COMMENT '用戶名', 名稱:name 類型:varchar 注釋:用戶名 `create_date` datetime DEFAULT NULL, 名稱:create_date 類型:datetime 注釋:null `status` int(11) DEFAULT NULL, 名稱:status 類型:int 注釋:null `age` int(11) DEFAULT NULL COMMENT '年齡', 名稱:age 類型:int 注釋:年齡 `mark` varchar(225) DEFAULT NULL, 名稱:mark 類型:varchar 注釋:null

到了這,我就就已經(jīng)從建表語句里拿到了所有需要的數(shù)據(jù)了,下面就開始使用這些數(shù)據(jù)來生成java文件了。

根據(jù)上面獲取的數(shù)據(jù)開始創(chuàng)建java文件

終于開始要創(chuàng)建java文件了。

但是~在創(chuàng)建java文件的時候要先吧之前獲取的數(shù)稍微處理一下,將sql中的格式轉(zhuǎn)換為java中的格式。比如屬性名稱,數(shù)據(jù)類型,class名稱之類的,現(xiàn)在開始~

將表名稱轉(zhuǎn)換為合適的class名稱

就是首字母大寫,駝峰式的命名規(guī)范。例如將user_log或者USER_LOG轉(zhuǎn)換為UserLog。

我們可以這么寫:

/*** 類名稱轉(zhuǎn)換** @param tableName* @return*/public static String entityName(String tableName) {String lowerCaseName = tableName.toLowerCase();StringBuilder newName = new StringBuilder();char[] chars = lowerCaseName.toCharArray();boolean change = false;for (int i = 0; i < chars.length; i++) {char aChar = chars[i];if (aChar == '_' && !change) {change = true;continue;}//首字母大寫if (i == 0) {aChar = Character.toUpperCase(aChar);}if (change) {aChar = Character.toUpperCase(aChar);change = false;}newName.append(aChar);}return newName.toString();}

這樣就得到了我們需要的class的名稱了。

將字段名稱轉(zhuǎn)換為java中的屬性名稱

這里就是將上一步操作的首字母大寫去掉就好了,下面是代碼:

/*** 屬性名稱轉(zhuǎn)換** @param name* @return*/public static String fieldName(String name) {name = name.toLowerCase();StringBuilder newName = new StringBuilder();char[] chars = name.toCharArray();boolean change = false;for (int i = 0; i < chars.length; i++) {char aChar = chars[i];if (aChar == '_' && !change) {change = true;continue;}if (change) {aChar = Character.toUpperCase(aChar);change = false;}newName.append(aChar);}return newName.toString();}

接下來是將sql中的數(shù)據(jù)類型轉(zhuǎn)換為java中的數(shù)據(jù)類型。

sql數(shù)據(jù)類型轉(zhuǎn)換

這里用map做了一個映射,有自己特定要求的可以自己修改。

public class ColumnFieldTypeMapping {private Map<String, Class> sqlFieldTypeMapping = new HashMap<>();{sqlFieldTypeMapping.put("VARCHAR", String.class);sqlFieldTypeMapping.put("CHAR", String.class);sqlFieldTypeMapping.put("TEXT", String.class);sqlFieldTypeMapping.put("MEDIUMTEXT", String.class);sqlFieldTypeMapping.put("LONGTEXT", String.class);sqlFieldTypeMapping.put("TINYTEXT", String.class);sqlFieldTypeMapping.put("BIT", Boolean.class);sqlFieldTypeMapping.put("INT", int.class);sqlFieldTypeMapping.put("BIGINT", long.class);sqlFieldTypeMapping.put("DOUBLE", double.class);sqlFieldTypeMapping.put("TINYINT", int.class);sqlFieldTypeMapping.put("FLOAT", float.class);sqlFieldTypeMapping.put("DECIMAL", BigDecimal.class);sqlFieldTypeMapping.put("INT UNSIGNED", int.class);sqlFieldTypeMapping.put("BIGINT UNSIGNED", int.class);sqlFieldTypeMapping.put("DECIMAL UNSIGNED", BigDecimal.class);sqlFieldTypeMapping.put("DATETIME", Date.class);sqlFieldTypeMapping.put("TIME", Date.class);sqlFieldTypeMapping.put("DATE", Date.class);sqlFieldTypeMapping.put("TIMESTAMP", Date.class);}/*** 根據(jù)sql數(shù)據(jù)類型獲取Java數(shù)據(jù)類型** @param columnType* @return*/public Class getFieldType(String columnType) {Class aClass = sqlFieldTypeMapping.get(columnType);if (aClass == null) {return sqlFieldTypeMapping.get(columnType.toUpperCase());}return null;} }

寫到這里,所有參與生成java文件的信息就已經(jīng)獲取完成了。

這時候我們需要把他們組裝起來,用來放進(jìn)freemarker中來解析并生成java文件中的內(nèi)容。

組裝參數(shù)

這里可能我以后用這個代碼干別的事情所以我建了兩個類,一個是ClassModel.java,一個是EntityModel.java

EntityModel繼承了ClassModel。我們主要用的是EntityModel.java。下面是代碼:

import java.util.*;/*** 用于生成java Entity文件的類*/ public class ClassModel {/*** java 中不需要引包的類型*/private static List<Class> baseClass = Arrays.asList(int.class,double.class,float.class,long.class,short.class,byte.class,char.class,boolean.class,String.class);/*** 類注釋*/private String classDoc;/*** 類名*/private String className;/*** 類 包名*/private String packageName;/*** K:屬性名稱* V:屬性類型*/private Map<String, Class> fields = new HashMap<>();/*** 屬性的注釋*/private Map<String, String> fieldDoc = new HashMap<>();;private List<Class> imports = new ArrayList<>();/*** 添加需要導(dǎo)入的包** @param importClass*/public void addImport(Class importClass) {if (baseClass.indexOf(importClass) != -1) {return;}if (imports.indexOf(importClass) == -1) {imports.add(importClass);}}/*** 添加屬性** @param fieldName 屬性名稱* @param fieldClass 屬性類型*/public void addfield(String fieldName, Class fieldClass) {if (!fields.containsKey(fieldName)) {fields.put(fieldName, fieldClass);}}/*** 添加屬性注釋** @param fieldName 屬性名稱* @param fieldDoc 屬性注釋*/public void addfieldDoc(String fieldName, String fieldDoc) {if (!this.fieldDoc.containsKey(fieldName)) {this.fieldDoc.put(fieldName, fieldDoc);}}public List<Class> getImports() {return imports;}public void setImports(List<Class> imports) {this.imports = imports;}public String getClassDoc() {return classDoc;}public void setClassDoc(String classDoc) {this.classDoc = classDoc;}public String getClassName() {return className;}public void setClassName(String className) {this.className = className;}public String getPackageName() {return packageName;}public void setPackageName(String packageName) {this.packageName = packageName;}public Map<String, Class> getFields() {return fields;}public void setFields(Map<String, Class> fields) {this.fields = fields;}public Map<String, String> getFieldDoc() {return fieldDoc;}public void setFieldDoc(Map<String, String> fieldDoc) {this.fieldDoc = fieldDoc;}@Overridepublic String toString() {final StringBuilder sb = new StringBuilder("{");sb.append(" \"classDoc\"=\"").append(classDoc).append('\"');sb.append(", \"className\"=\"").append(className).append('\"');sb.append(", \"packageName\"=\"").append(packageName).append('\"');sb.append(", \"fields\"=").append(fields);sb.append(", \"fieldDoc\"=").append(fieldDoc);sb.append(", \"imports\"=").append(imports);sb.append('}');return sb.toString();} } import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;/*** 數(shù)據(jù)庫映射*/ public class EntityModel extends ClassModel {/*** 數(shù)據(jù)庫名稱*/private String tableName;/*** 數(shù)據(jù)庫中的Id字段名稱*/private List<String> idColumnNames = new ArrayList<>();/*** 類屬性名對應(yīng)數(shù)據(jù)庫字段映射* key: class 屬性名稱* value:數(shù)據(jù)庫字段名*/private Map<String, String> fieldSqlName = new HashMap<>();/*** 添加class 屬性映射和 數(shù)據(jù)庫 字段映射** @param fieldName* @param sqlName*/public void addfieldSqlName(String fieldName, String sqlName) {if (!fieldSqlName.containsKey(fieldName)) {fieldSqlName.put(fieldName, sqlName);}}/*** 添加id字段名** @param idColumnName*/public void addIdColumnName(String idColumnName) {idColumnNames.add(idColumnName);}public String getTableName() {return tableName;}public void setTableName(String tableName) {this.tableName = tableName;}public Map<String, String> getFieldSqlName() {return fieldSqlName;}public void setFieldSqlName(Map<String, String> fieldSqlName) {this.fieldSqlName = fieldSqlName;}public List<String> getIdColumnNames() {return idColumnNames;}public void setIdColumnNames(List<String> idColumnNames) {this.idColumnNames = idColumnNames;} }

在這里將從數(shù)據(jù)庫中得到的數(shù)據(jù)都組裝好,就可以使用freemarker來生成Java文件的內(nèi)容了。下面是代碼:

/*** 根據(jù)建表語句組裝EntityModel** @param createTableSql* @return*/ EntityModel makeModelBySql(String createTableSql) {Formatter formatter = new Formatter();EntityModel model = new EntityModel();String tableComment = SqlUtils.getTableComment(createTableSql);String tableName = SqlUtils.getTableName(createTableSql);String id = SqlUtils.getId(createTableSql);model.addIdColumnName(id);model.setClassName(NameConvert.entityName(tableName));model.setTableName(tableName);//注釋是null的時候用數(shù)據(jù)庫表名作為注釋model.setClassDoc(tableComment == null ? tableName : tableComment);List<String> line = SqlUtils.getColumnSqls(createTableSql);for (String oneLine : line) {String columnName = SqlUtils.getByPattern(oneLine, "`(.*)`", 1);String comment = SqlUtils.getByPattern(oneLine, "COMMENT '(.*)'", 1);String columnType = SqlUtils.getByPattern(oneLine, "`" + columnName + "` ([A-Za-z]*)", 1);String fieldName = NameConvert.fieldName(columnName);Class fieldClass = columnFieldTypeMapping.getFieldType(columnType);if (fieldClass == null) {formatter.format("table:%s columnName:%s sql類型:%s 沒有映射類型", tableName, columnName, columnType);throw new UnsupportedOperationException(formatter.toString());}model.addfield(fieldName, fieldClass);//字段注釋是null的時候用數(shù)據(jù)庫字段名作為注釋model.addfieldDoc(fieldName, comment == null ? columnName : comment);model.addfieldSqlName(fieldName, columnName);model.addImport(fieldClass);}return model; }

這樣一個我們需要的參數(shù)就組裝好了。現(xiàn)在開始編寫freemarker用的代碼。

freemarker工具類

用來加載freemarker模板和處理模板中的參數(shù)。FreeMarkerUtils.java,代碼如下:

import freemarker.cache.StringTemplateLoader; import freemarker.template.Configuration; import freemarker.template.DefaultObjectWrapper; import freemarker.template.Template;import java.io.StringWriter; import java.io.Writer; import java.util.Locale; import java.util.Scanner;public class FreeMarkerUtils {/*** freemarker工具,** @param subjectParams* @param templetPath* @return* @throws Exception*/public static String getJavaClass(Object subjectParams, String templetPath) throws Exception {StringTemplateLoader loader = new StringTemplateLoader();Scanner scanner = new Scanner(Thread.currentThread().getContextClassLoader().getResourceAsStream(templetPath));StringBuilder builder = new StringBuilder();while (scanner.hasNext()) {builder.append(scanner.nextLine()).append("\n");}String name = System.currentTimeMillis() + "";loader.putTemplate(name, builder.toString());//第一步:實(shí)例化Freemarker的配置類Configuration conf = new Configuration();conf.setObjectWrapper(new DefaultObjectWrapper());conf.setLocale(Locale.CHINA);conf.setDefaultEncoding("utf-8");conf.setTemplateLoader(loader);//處理空值為空字符串conf.setClassicCompatible(true);Template template = conf.getTemplate(name);Writer out = new StringWriter(2048);template.process(subjectParams, out);String javaClass = out.toString();return javaClass;} }

現(xiàn)在有了工具類之后,還不能立即開始生成java文件,因?yàn)檫€要繼續(xù)設(shè)置java的package和生成文件的路徑,這時候我們可以修改之前寫的config.xml

修改config.xml

<xml><jdbc.url></jdbc.url><jdbc.username></jdbc.username><jdbc.password></jdbc.password><basePath>/home/hjx/work/demo/src/main/java</basePath><entityPackage>top.hejiaxuan.demo.entity</entityPackage> </xml>

這里添加了兩個參數(shù):basePathentityPackage。一個是要生成java的文件的路徑,一個是java文件的包名。

然后我們再寫一個寫出文件的工具類FileUtils.java

編寫FileUtils.java

import java.io.*;public class FileUtils {/*** 寫入文件** @param path 文件路徑* @param content 文件內(nèi)容*/public static void write(String path, String content) {File file = new File(path);File parentFile = file.getParentFile();try {if (!parentFile.exists()) {parentFile.mkdirs();}if (!file.exists()) {file.createNewFile();}FileWriter fileWriter = new FileWriter(file);fileWriter.write(content);fileWriter.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} }

這樣就萬事具備,就差生成文件啦。下面就開始啦~~~

開始生成java文件

在生成文件前,我們還需要把basePathentityPackage從配置文件里取出來,這一步我就不寫了~~

static final String DOT = ".";static final String FILE_TYPE = ".java";static final String ENTITY_TEMPLET_PATH = "EntityTemp.ftl";/*** 用于生成一個類文件** @param entityModel* @return*/ boolean makeOneClass(EntityModel entityModel) {entityModel.setPackageName(entityPackage);String filePath = basePath + "/" + entityPackage.replace(DOT, "/") + "/" + entityModel.getClassName() + FILE_TYPE;try {String javaClassString = FreeMarkerUtils.getJavaClass(entityModel, ENTITY_TEMPLET_PATH);FileUtils.write(filePath, javaClassString);return true;} catch (Exception e) {e.printStackTrace();}return false; }

好啦~~~大功告成。

額~~~

好像少點(diǎn)啥~~~

模板文件沒有放出來~~~

編寫EntityTemp.ftl

package ${packageName};<#--導(dǎo)入的包--> <#list imports as import> import ${import.name}; </#list><#--類名--> <#if classDoc?length gt 0> /*** ${classDoc}* @author hejiaxuan*/ </#if> public class ${className} {<#--屬性名稱--> <#list fields?keys as key><#assign fieldDocStr = fieldDoc[key]><#if fieldDocStr?length gt 0>/**${fieldDocStr}*/</#if><#if idColumnNames?seq_contains(fieldSqlName[key])></#if>private ${fields[key].simpleName} ${key};</#list> <#list fields?keys as key><#assign fieldClass = fields[key].simpleName> <#--setter-->public void set${key?cap_first}(${fieldClass} ${key}) {this.${key} = ${key};}<#--getter-->public ${fieldClass} <#if fieldClass="boolean">is<#else>get</#if>${key?cap_first}() {return this.${key};}</#list>@Overridepublic String toString() {final StringBuilder sb = new StringBuilder("["); <#list fields?keys as key>sb.append("${key}:").append(${key}).append("; "); </#list>sb.append("]");return sb.toString();} }

最后

? 這里面我只是貼出來了一些要用到的代碼片段,沒有將所有的代碼全部寫出來。其實(shí)寫工具就是一個慢慢實(shí)現(xiàn)自己思路的過程,有思路的話一切都很簡單。

? 如果有人需要項(xiàng)目全部代碼的話請到 https://github.com/hjx601496320/entityMaker 自行查看。

轉(zhuǎn)載于:https://www.cnblogs.com/hebaibai/p/10347754.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的写一个工具生成数据库实体类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

综合久久精品 | 五月开心婷婷网 | 免费看黄色小说的网站 | 亚洲色综合 | 24小时日本在线www免费的 | 亚洲精品在线播放视频 | 精品免费观看视频 | 国产视频久久 | 五月婷婷黄色网 | 久久人人爽人人爽 | 国产成人在线观看 | 午夜视频在线观看欧美 | 婷婷伊人综合亚洲综合网 | 日韩视频免费 | 日韩精品专区在线影院重磅 | 99re视频在线观看 | 免费网站污 | 91麻豆国产 | 探花视频在线版播放免费观看 | 日韩在线电影观看 | 综合黄色网| 狠狠ri| 国产小视频福利在线 | 人人爱人人舔 | 成人aⅴ视频 | 国产成人精品免高潮在线观看 | 久久黄色片 | 99在线免费观看视频 | 成人毛片一区 | 国产69精品久久久久9999apgf | 成人小视频在线观看免费 | 久久成人视屏 | 亚洲自拍偷拍色图 | 色偷偷88欧美精品久久久 | 91手机电影 | www.黄色 | 亚洲一区二区三区在线看 | 日本中文在线 | 婷婷天天色 | 久久精品久久久精品美女 | 丁香五月网久久综合 | 亚洲视频在线免费观看 | 99久久久国产免费 | 一本到在线 | 国产一区二三区好的 | 久久精品一二三区白丝高潮 | 天天爽天天搞 | 在线视频a | 国产精品一区二区久久精品爱微奶 | 亚洲免费在线视频 | 高清不卡一区二区在线 | 五月天婷婷综合 | 亚洲第一区精品 | 国产精品理论片在线观看 | 蜜臀精品久久久久久蜜臀 | 国产在线小视频 | 精品免费观看 | 天天综合五月天 | 国产成人精品久久久 | 天天色天天综合网 | 日韩免费在线观看网站 | 麻豆高清免费国产一区 | 免费视频资源 | 网站你懂的 | 最近日韩中文字幕中文 | 香蕉成人在线视频 | 国产精品自在欧美一区 | 国产无套精品久久久久久 | 亚洲精选在线 | 亚州精品天堂中文字幕 | 免费看av在线 | 激情五月播播久久久精品 | 久久国产女人 | 在线观看国产中文字幕 | 午夜精品久久久久久久99婷婷 | 一区二区三区中文字幕在线 | 综合亚洲视频 | 日韩免费视频线观看 | 天天综合成人网 | 亚洲国产剧情av | 国产综合香蕉五月婷在线 | 亚洲国产中文字幕在线观看 | 亚洲精品在线一区二区三区 | 91大神视频网站 | 91精品对白一区国产伦 | 日韩中文字幕视频在线观看 | 国产专区精品视频 | 欧美在线视频第一页 | 久久激情小说 | 免费在线91 | 一区二区电影在线观看 | av一区在线 | 国产精品自产拍在线观看中文 | 免费看片网页 | 在线网站黄 | 免费在线观看日韩视频 | 国产精品毛片完整版 | 婷婷精品国产一区二区三区日韩 | 在线观av | 国产精品亚州 | 免费在线观看成人 | 欧美不卡视频在线 | 免费在线黄网 | 欧美精选一区二区三区 | 在线免费观看视频你懂的 | 麻豆视频在线免费看 | 久久久久久久久久网 | www狠狠操| 黄色一级在线免费观看 | 91成人网在线 | 成人黄色片在线播放 | 欧美伊人网| 国产欧美在线一区 | 久草视频在线播放 | 国产色在线,com | 五月宗合网 | 麻豆播放 | 精品久久久久一区二区国产 | 亚洲精品免费在线视频 | 麻豆网站免费观看 | 久久久久亚洲精品 | 人人草在线观看 | 免费观看午夜视频 | 欧美日韩久久久 | 欧美日韩亚洲在线 | 欧美精品一区二区免费 | 天天射,天天干 | 性色xxxxhd | 久草在线最新免费 | 国产理论在线 | 91完整版 | 精一区二区 | 国产超碰在线观看 | 日本精品久久久一区二区三区 | 精品国产一区二区三区四区vr | 成人亚洲精品国产www | 国产高清av免费在线观看 | 99在线视频播放 | 国产中文字幕国产 | 国产98色在线 | 日韩 | www.狠狠色 | 成人在线免费小视频 | 在线天堂中文www视软件 | 99久久99久久精品免费 | 97视频网站 | 国产原厂视频在线观看 | 人人爽人人爽人人爽学生一级 | 成人免费色 | 国产精品久久久久久久久久三级 | 国产亚洲精品美女 | 九色精品免费永久在线 | 一区二区三区免费播放 | 久久成人福利 | 激情中文字幕 | a久久久久久 | 欧美成人日韩 | 国产精品黄色av | 狠狠狠色丁香婷婷综合久久88 | 成人毛片在线视频 | 国内精品久久久久影院优 | 日本爱爱免费 | 狠狠狠狠狠色综合 | 国产高清成人 | 黄色在线看网站 | 天天干天天干 | 成人免费网站视频 | 美女视频黄色免费 | a视频免费| 国产三级午夜理伦三级 | 五月婷婷六月丁香 | 中文 一区二区 | 免费日韩 精品中文字幕视频在线 | 国产尤物在线视频 | 国产免费视频一区二区裸体 | 久久久久久久久爱 | 在线免费高清一区二区三区 | 亚洲国产视频a | 玖玖在线资源 | 久久久九色精品国产一区二区三区 | 在线观看成年人 | 午夜.dj高清免费观看视频 | 少妇搡bbbb搡bbb搡aa | 高潮毛片无遮挡高清免费 | 在线观看日韩精品 | 久草免费电影 | 99久久超碰中文字幕伊人 | 国产中文字幕在线播放 | 中文字幕精 | 欧洲亚洲精品 | 欧美性色综合网站 | 国产成在线观看免费视频 | 久久久国产一区二区三区 | 青草草在线视频 | 天堂av网在线 | 香蕉视频导航 | 日本中文字幕免费观看 | 波多野结衣一区二区 | 亚洲一区二区三区毛片 | 国产色在线视频 | 成人av网站在线播放 | 韩国一区二区av | 丁香六月婷婷开心婷婷网 | 特级西西www44高清大胆图片 | 日本韩国中文字幕 | 97人人澡人人爽人人模亚洲 | 奇米影视777影音先锋 | 欧美日韩性| 九色视频网 | 天天操天天操天天 | 国产亚洲在线 | 国产精品女主播一区二区三区 | 日韩在线观看网址 | 国产精品毛片久久久久久 | 欧美一级性| 国产精久久久 | 国产区精品在线观看 | 日本mv大片欧洲mv大片 | 探花视频免费在线观看 | 国产日本亚洲高清 | 国产精品麻豆一区二区三区 | 激情五月看片 | 伊人婷婷| 亚洲精品合集 | 夜夜躁天天躁很躁波 | 人人涩 | 在线免费视频你懂的 | 精品国产电影一区二区 | 日本在线成人 | 精品视频在线看 | 九九久久久久久久久激情 | 婷婷爱五月天 | 91在线免费视频观看 | 亚洲 精品在线视频 | www.久久免费视频 | 国产成人av一区二区三区在线观看 | 99在线观看视频 | 在线电影av | 91精品一区二区在线观看 | 国产资源中文字幕 | 毛片888 | 亚洲日本va午夜在线影院 | 精品在线二区 | 狠狠色伊人亚洲综合网站野外 | 91av在线免费 | 婷婷精品国产一区二区三区日韩 | 精品999国产| av电影免费| 夜夜操天天摸 | 97超碰成人在线 | 精品一区二区在线免费观看 | 少妇视频在线播放 | 一区二区三区日韩精品 | 久久久久久久久久久福利 | 99久久精品久久久久久清纯 | 久久久久久久久综合 | 欧美日韩亚洲精品在线 | 69国产精品视频免费观看 | 五月天激情视频在线观看 | 亚洲国内在线 | 欧美电影黄色 | 久久九九国产精品 | 丁香网五月天 | 最新国产在线视频 | 精品国产综合区久久久久久 | 九九热av | 国产一区免费视频 | 色激情在线 | 久久免费在线视频 | 免费网站在线观看人 | 亚洲国产欧美一区二区三区丁香婷 | 亚洲精品美女免费 | 夜色.com | 91亚州| 国产精品福利午夜在线观看 | 五月av在线| 在线一区电影 | 日韩av电影免费在线观看 | 亚洲精品色视频 | 人人艹人人 | 性色xxxxhd| 日韩美女黄色片 | 99久久久久久 | 精品国产99国产精品 | 97在线观看免费视频 | 免费欧美高清视频 | 狠狠综合久久av | 中文字幕丝袜美腿 | 国产精品一区二区三区久久 | 97热视频 | 国产精品久久久免费 | 久久久在线视频 | 婷婷国产一区二区三区 | 亚洲人成免费网站 | 久久国产露脸精品国产 | 久久欧美在线电影 | 亚洲精品www.| 国产精品久久久久久模特 | 欧美另类v | 亚洲精品国产视频 | 91资源在线免费观看 | 午夜视频福利 | 国产精品久久久久久久久免费 | 亚洲狠狠丁香婷婷综合久久久 | 婷婷久久国产 | 日韩一区二区三区免费视频 | 色妞色视频一区二区三区四区 | 亚洲一级片 | 在线播放一区二区三区 | 天天激情综合网 | 国产福利在线免费观看 | 人人澡视频 | 国产午夜麻豆影院在线观看 | 在线免费观看黄色小说 | 91麻豆文化传媒在线观看 | 久久在线 | 亚洲最大av在线播放 | 99精品免费 | 久久人人射| 伊香蕉大综综综合久久啪 | 久久国产精品99久久久久久丝袜 | 亚洲精品tv久久久久久久久久 | 久久精品这里热有精品 | 在线亚洲人成电影网站色www | 在线黄色国产电影 | 久久无码精品一区二区三区 | 日韩在线不卡 | 最新国产精品视频 | 毛片激情永久免费 | 欧洲成人免费 | 精品在线99 | 精品亚洲网 | 国产一区免费在线观看 | 日韩电影在线一区 | 国产高清视频在线观看 | 福利视频区| 99色网站 | av在线播放国产 | 女人久久久久 | 99久久精品无码一区二区毛片 | 成人欧美在线 | 天天干天天操av | 97超碰人人澡人人爱学生 | 一区二区三区在线视频观看58 | 婷婷av网站 | 国产精品久久久久久久免费大片 | 白丝av在线 | 99久久er热在这里只有精品15 | 午夜美女网站 | 午夜视频在线瓜伦 | 亚洲成人av在线电影 | 在线91播放 | 久久精品欧美一区二区三区麻豆 | 免费观看性生交大片3 | 久久视频免费在线 | 91漂亮少妇露脸在线播放 | 五月开心六月伊人色婷婷 | 97碰在线视频 | 婷婷六月天在线 | 亚洲电影久久 | 黄色成人在线网站 | 成人三级视频 | 欧美日韩国产精品爽爽 | 东方av在| 欧美做受高潮1 | 一本—道久久a久久精品蜜桃 | 国产又粗又猛又色又黄视频 | 久久在线观看 | 国产成人a亚洲精品v | 久久99精品国产一区二区三区 | 在线观看蜜桃视频 | 五月天视频网站 | 亚洲天堂首页 | 91成人看片 | 亚洲传媒在线 | 成人一区二区三区在线观看 | 99在线观看免费视频精品观看 | 中文字幕一区二区在线观看 | 亚洲精品在线视频播放 | 成年人在线免费看 | 久久精品视频中文字幕 | 911av视频| 国产黄色av | 97国产大学生情侣酒店的特点 | 偷拍福利视频一区二区三区 | 久久久午夜精品福利内容 | 狠狠色噜噜狠狠 | 国产精品爽爽久久久久久蜜臀 | 国产一区二区免费看 | 看片网站黄 | 色视频 在线| 在线一级片 | 久草精品在线观看 | 一二三区视频在线 | 久久精品99北条麻妃 | a√国产免费a | 欧美日韩国内在线 | 中文字幕亚洲国产 | 日韩福利在线观看 | 欧美在线视频第一页 | 天天色天天综合 | 亚洲精品免费在线观看视频 | 亚洲精品日韩av | 在线观看岛国av | 久久久久亚洲天堂 | 亚洲国产伊人 | 国产亚洲精品久久久久动 | 日韩欧美区 | 国产一性一爱一乱一交 | 国产婷婷在线观看 | 亚洲精品美女在线观看播放 | 国产精品久久电影网 | 国产人成看黄久久久久久久久 | 久久99亚洲精品久久 | 久久在线免费观看视频 | 天天干视频在线 | 欧美精品第一 | 成人小视频在线观看免费 | 日韩v欧美v日本v亚洲v国产v | 91精选在线观看 | 国产一级片在线播放 | www.91成人| 99精品国产一区二区三区麻豆 | www久久99| 人人爽夜夜爽 | 9999免费视频 | 久久午夜国产精品 | 免费看麻豆 | 久久精品国产v日韩v亚洲 | av电影中文字幕 | 国产在线播放一区 | 日本久草电影 | 精品女同一区二区三区在线观看 | 激情视频区| 永久免费精品视频网站 | 免费视频你懂的 | 国产精品久久久久久一二三四五 | 亚洲精品www久久久 www国产精品com | 成人小视频在线 | 国产精品一区二区三区在线播放 | www天天干com| 四虎最新入口 | 国产一级在线观看视频 | 天天摸天天操天天爽 | 99人久久精品视频最新地址 | 亚洲欧洲精品一区二区精品久久久 | 亚洲成人精品久久 | 丁香久久| 奇米先锋 | 精品国产不卡 | 一区二区三区国产精品 | 久久兔费看a级 | 99久久夜色精品国产亚洲 | 国产免费不卡av | 手机看片99| 久久不射网站 | 天天干天天天天 | 成人免费在线播放视频 | 欧美成人999 | 久久久久久久网 | 在线观看www. | 国产美女搞久久 | 亚洲午夜精品在线观看 | 国产精品原创av片国产免费 | 国产成人综合精品 | 久久xx视频| 免费在线国产视频 | 999久久国精品免费观看网站 | 亚洲国内精品在线 | 久久免费的视频 | 亚洲欧美日本一区二区三区 | 丁香六月在线观看 | 人人草人 | 最近中文字幕免费av | 成人国产一区 | www.色午夜,com | 午夜精品成人一区二区三区 | 日本久久成人中文字幕电影 | 色多视频在线观看 | 国产精品美女久久久久久久久 | 97超碰免费 | 国产不卡在线播放 | 国产亚洲欧美精品久久久久久 | 亚洲精品国产片 | 中文字幕在线精品 | 中文乱幕日产无线码1区 | 91在线日韩 | 高潮久久久久久久久 | 在线观看视频一区二区三区 | 国产小视频网站 | 日韩在线高清免费视频 | 成人午夜免费剧场 | 久热超碰 | 久久久久久久久久伊人 | 成人在线黄色电影 | 日韩综合在线观看 | 国产一区二区在线影院 | 四虎免费在线观看 | 在线97| 午夜精品久久久久久久久久久久久久 | 黄色影院在线播放 | 天堂av在线网址 | 99在线观看视频网站 | 国产高清在线观看 | 日本黄色大片免费看 | a黄色一级片 | 欧洲一区精品 | 激情五月婷婷丁香 | 最近中文字幕视频完整版 | 97成人在线观看视频 | 激情综合网五月婷婷 | 一区二区精品视频 | 日本三级久久 | 欧美性色综合 | 九色精品免费永久在线 | 久久久久亚洲精品中文字幕 | 国产一级片免费观看 | 久久av网 | 久久不卡日韩美女 | 一级做a爱片性色毛片www | 操操操综合 | 国产做a爱一级久久 | 亚洲国产三级在线观看 | 精品国产中文字幕 | 白丝av在线 | 99国产精品免费网站 | 久久精品9| 欧美日韩一区二区在线观看 | 亚洲人人av | 久久av电影| 成人国产精品久久久 | 超碰97人 | 成人综合婷婷国产精品久久免费 | 男女日麻批 | 精品国产电影一区 | 亚洲精品91天天久久人人 | 久久婷婷一区二区三区 | 福利精品在线 | 波多野结衣小视频 | 日本91在线 | 色中射| 97在线免费视频观看 | 美女视频黄,久久 | 中文字幕在线免费观看视频 | 99久久久久久久久久 | 久久精品播放 | 91九色丨porny丨丰满6 | 亚洲五月六月 | 国产91在线 | 美洲 | 亚洲婷婷在线视频 | 国产探花视频在线播放 | 91av在线不卡 | 九九在线国产视频 | 91精品国产99久久久久久红楼 | 国产小视频免费在线网址 | 日韩超碰在线 | 国产99久久 | 99re久久资源最新地址 | 亚洲国产精品成人va在线观看 | 丝袜美女在线 | 字幕网av| 成人影视免费看 | 狠狠色丁香婷婷综合橹88 | 九九免费观看全部免费视频 | 香蕉影院在线观看 | a黄色片在线观看 | 激情综合国产 | 免费久久99精品国产 | 色就色,综合激情 | 精品一区二区综合 | 成人免费看电影 | 美女黄网站视频免费 | 久久久久欧美精品999 | 在线欧美小视频 | 日韩二区精品 | 午夜精品视频福利 | 久久兔费看a级 | 人人舔人人射 | 久久曰视频| 久久爱综合 | 日韩欧美一区二区在线观看 | 激情视频综合网 | 日韩在线视 | 97精品视频在线播放 | 色婷婷国产精品一区在线观看 | 91影视成人 | 色综合天天做天天爱 | 99c视频在线 | 亚洲免费精品一区二区 | 五月婷婷六月丁香在线观看 | 国产成人精品亚洲a | 亚洲黄色在线免费观看 | 欧美激情视频一区二区三区 | 欧美久久久久久久 | 欧美日韩亚洲在线观看 | 97在线观看免费高清完整版在线观看 | 亚洲网站在线 | 欧美在线a视频 | 美州a亚洲一视本频v色道 | 亚洲精品网站在线 | 色丁香婷婷 | 91视频a | 五月婷婷黄色 | 精品国偷自产国产一区 | 中文字幕视频免费观看 | 久热电影 | 免费av视屏 | 成人国产电影在线观看 | av夜夜操 | 麻豆视频免费在线播放 | 日韩在线视频一区二区三区 | 一级黄色在线视频 | 麻豆国产精品va在线观看不卡 | av字幕在线| 五月激情片 | 国产黄色视 | 国产精品女同一区二区三区久久夜 | 超碰人人在线观看 | 精品久久久久久久久久久久久 | 国产破处视频在线播放 | 亚洲天堂网视频在线观看 | 久久不卡免费视频 | 亚洲一级黄色片 | 国产精品黄网站在线观看 | 久久久久伦理电影 | 91精品国产成 | 美女免费视频一区 | 亚洲高清视频在线观看免费 | 在线99| 高清精品在线 | 草久在线观看视频 | a级一a一级在线观看 | 色婷婷av在线 | 欧美性大战 | 国产精品成人自产拍在线观看 | 天天干天天干天天操 | 中文资源在线播放 | 嫩小bbbb摸bbb摸bbb | 波多野结衣精品视频 | 97超碰人人模人人人爽人人爱 | 黄色日本片 | 国产一区久久久 | 久久婷婷视频 | 午夜精品中文字幕 | 免费国产一区二区视频 | 欧美一二三区播放 | 一区二区三区中文字幕在线 | 新版资源中文在线观看 | 99久久婷婷国产精品综合 | a黄色片| av大片免费在线观看 | 国产网站在线免费观看 | 亚洲精品视频中文字幕 | 亚洲成人资源在线 | 国产成人亚洲精品自产在线 | 视频国产一区二区三区 | 亚洲精品激情 | 国产一二三区av | 亚洲国产成人av网 | 国产成人精品久久亚洲高清不卡 | 激情电影在线观看 | 91人人射| 在线免费国产 | 日批在线看 | 麻豆91小视频 | a视频在线观看免费 | 国产成人精品一区二区三区免费 | 久久综合五月天婷婷伊人 | 婷婷丁香av | 亚洲爱av| 亚洲视频在线播放 | 亚洲午夜精品电影 | 午夜视频久久久 | 狠狠躁日日躁夜夜躁av | 欧美日韩一级久久久久久免费看 | 成人午夜电影在线 | 九九九电影免费看 | 久久久九九 | 亚洲成人黄色av | 国产精品一区在线观看 | 一区二区三区在线不卡 | 成人免费视频免费观看 | 97网在线观看 | se视频网址 | 一区二区三区四区五区在线视频 | 在线观看av小说 | 91理论片午午伦夜理片久久 | 97精品视频在线播放 | 99国产情侣在线播放 | 欧美成年人在线视频 | 成人精品视频久久久久 | 久久国内精品视频 | 日韩精品久久久久久久电影竹菊 | 亚洲资源在线 | 日日成人网 | 91久久国产露脸精品国产闺蜜 | 黄污网站在线 | 欧美天堂视频在线 | 丁香花中文在线免费观看 | 四虎成人精品永久免费av | 这里只有精彩视频 | 人人射人人射 | 丁香资源影视免费观看 | av网站手机在线观看 | 免费观看十分钟 | 粉嫩av一区二区三区免费 | 久久人91精品久久久久久不卡 | 中文字幕成人在线 | av在线免费在线观看 | 玖玖精品视频 | 韩国av一区| 97成人精品区在线播放 | 国产美女精品在线 | 涩涩网站免费 | 日韩,中文字幕 | 欧美一二三视频 | 91女人18片女毛片60分钟 | 久久综合中文字幕 | 天天干夜夜爱 | 日韩黄色中文字幕 | 4p变态网欧美系列 | 精品国产aⅴ一区二区三区 在线直播av | 爱爱av网| 一级黄色免费网站 | 国产精品白丝jk白祙 | av在线永久免费观看 | 国产精品黄色影片导航在线观看 | 日韩精品不卡在线 | 久久精品a| 国产精品久久久久久久久久久免费 | 午夜久久久影院 | 成人app在线播放 | 国产在线精品一区二区三区 | 亚洲乱码精品久久久 | 久久人人爽人人人人片 | 人人添人人澡 | 久久系列| 99精品在线直播 | 婷婷资源站 | 日韩在线视频免费观看 | 美女视频免费一区二区 | 日日爽夜夜操 | 天天干国产 | 97小视频| 999国内精品永久免费视频 | 337p西西人体大胆瓣开下部 | 97人人模人人爽人人喊中文字 | 午夜视频在线观看一区二区三区 | 国产精品理论片在线观看 | 国产无吗一区二区三区在线欢 | 国产码电影 | 日韩中文字幕第一页 | 精品国产_亚洲人成在线 | 国产二区免费视频 | 波多野结衣在线播放一区 | 91综合色 | 亚洲香蕉视频 | 亚洲国产精品女人久久久 | zzijzzij亚洲成熟少妇 | 天天爽网站 | 免费观看的av网站 | 中文字幕资源网 国产 | 国产精品网站一区二区三区 | 亚洲人成人在线 | av三级在线播放 | 亚洲v精品 | www国产亚洲精品久久麻豆 | 国产精选在线 | 日韩欧美精选 | 国产在线成人 | 国产欧美最新羞羞视频在线观看 | 夜夜操天天摸 | 五月婷婷综合在线观看 | 亚洲成免费 | 精品视频123区在线观看 | 99 色| av不卡免费看 | av观看在线观看 | 男女激情网址 | 日本一区二区三区免费看 | 亚洲男男gaygayxxxgv | 久久久久久久久久久久久久免费看 | 黄色三级av | 国产精品成人在线 | 久久精品男人的天堂 | 久久新| 久久91久久久久麻豆精品 | 狠狠干天天干 | 成人一区不卡 | 欧美va日韩va | 综合视频在线 | 精品产品国产在线不卡 | 开心综合网| www.香蕉视频 | 在线看污网站 | 韩国av免费在线 | 中文在线字幕免 | 丁香婷婷久久久综合精品国产 | 国产亚洲精品美女 | 日韩欧美成 | 999久久久免费视频 午夜国产在线观看 | 视频三区 | 亚洲播放一区 | 国产 色 | 韩国精品视频在线观看 | 极品久久久久 | 亚洲天天干| 国产精品观看 | 亚洲欧美一区二区三区孕妇写真 | av网站免费看 | 欧美一区二区在线免费观看 | 91禁在线看| 在线免费视频 你懂得 | 国产一区福利 | 色老板在线视频 | 夜色成人网 | 欧美日韩精品在线观看 | 国产一线二线三线在线观看 | 一区三区视频 | 日日天天干 | 欧美激情综合五月色丁香 | 日韩a在线播放 | 四虎影院在线观看av | 久草视频国产 | 丁香激情综合久久伊人久久 | 亚洲精品美女在线观看 | 精品自拍sae8—视频 | 亚洲精品视频在线免费播放 | aaa黄色毛片 | 成人av一区二区三区 | 人人插人人做 | 久久国产精品久久久久 | 国内精品久久久久国产 | 国产一区黄色 | 午夜三级在线 | 91麻豆精品91久久久久同性 | 亚洲高清不卡av | 久香蕉 | 黄色毛片在线观看 | 久久国产区 | 91精品毛片| 中文字幕国产在线 | 中文字幕一区二区三区乱码在线 | 九九热av | 99精品免费久久久久久久久日本 | 久草视频在线免费 | 亚洲一级久久 | 亚洲黄色一级电影 | 玖玖国产精品视频 | 菠萝菠萝蜜在线播放 | 免费一级特黄毛大片 | 国产精品免费在线视频 | 日本高清dvd | 成人免费ⅴa | 三级视频片| 九九热在线视频免费观看 | 久久久久久网站 | 69亚洲视频 | 国产日女人 | 免费av在线网站 | 日韩av视屏在线观看 | 久久九九免费 | 激情网五月天 | 欧美视屏一区二区 | 欧美日韩视频在线一区 | 这里只有精彩视频 | 国产一线二线三线在线观看 | 欧美一级片免费观看 | 欧美成年网站 | 国产专区在线 | 四虎在线免费视频 | 福利一区在线视频 | 99视频在线精品国自产拍免费观看 | 色综合久久综合 | 中文永久免费观看 | 中文字幕成人av | 一区二区精品久久 | 国产91在线 | 美洲 | 国产成人av电影在线观看 | 超碰国产人人 | 成人性生交大片免费观看网站 | 五月婷婷狠狠 | 亚洲高清精品在线 | 亚洲在线黄色 | 欧美 日韩 国产 中文字幕 | 免费看成人a | 亚洲欧美在线观看视频 | 亚洲伦理一区二区 | 网站在线观看你们懂的 | 96久久久| 亚洲精品国偷拍自产在线观看蜜桃 | 成人黄色在线视频 | 蜜臀一区二区三区精品免费视频 | 国内精品久久久久久久97牛牛 | av免费线看| 久久99久久99精品免观看软件 | 日韩欧美在线观看 | 国产精品精品国产婷婷这里av | 最新色站 | 免费人成在线观看网站 | 99精品热视频只有精品10 | 正在播放国产91 | 9999在线观看 | 99中文字幕视频 | 国产免费片| 国产精品综合久久久久久 | 九九九热精品 | 在线观看国产日韩欧美 | 精品久久久久久久久久久久久 | 久久精品一区二区三区中文字幕 | 精品久久久久久久 | 中文字幕一区二区三区久久蜜桃 | 亚洲精品系列 | 国产激情小视频在线观看 | 国产精品久久麻豆 | 欧美视频在线观看免费网址 | 天天操天天透 | 亚洲2019精品 | 手机在线日韩视频 | 欧洲精品久久久久毛片完整版 | 黄色三级视频片 | a久久久久 | 色先锋资源网 | 久久国产精品99久久久久久进口 | 婷婷av网 | 永久精品视频 | 婷婷丁香色 | 色婷婷电影网 | 午夜精品久久久久 | 波多野结衣一区二区三区中文字幕 | 69av国产 | 色在线最新 | 在线国产小视频 | av日韩av | 91精品91 | 天天爱天天射天天干天天 | 欧美日韩后 | 免费看毛片网站 | av天天色| 伊人久在线 | 视频国产 | 中文不卡视频在线 | 免费看的黄网站 | 午夜久久视频 | 亚洲精品国 | 超碰在线成人 | 亚洲a免费 | 国内久久精品 | 国产精品theporn| 色中射 | 在线观看黄av | 精品视频网站 | 日本狠狠色| 日本久久高清视频 | 免费在线观看午夜视频 | 日韩精品一区二区久久 | 97香蕉久久超级碰碰高清版 | 国产亚洲精品久久久久久大师 | 一二三精品视频 | 成人午夜久久 | 亚洲国产免费看 | 欧美狠狠操 | 在线不卡中文字幕播放 | 久久免费视频2 | 蜜臀av性久久久久av蜜臀妖精 | 51精品国自产在线 | 久av在线| 久久激情五月婷婷 | 美女性爽视频国产免费app | 亚洲一区二区精品 | 99久久影院 | 久久久69| 日韩精品aaa | 69夜色精品国产69乱 | 欧美巨大荫蒂茸毛毛人妖 | 91在线视频免费播放 | 久久字幕网 | 成人av电影在线观看 | 96久久欧美麻豆网站 | 香蕉91视频| 黄色免费大片 | 午夜影院三级 | 中文字幕你懂的 | 欧美国产日韩一区二区三区 | 国产精品色婷婷视频 | 国产免费观看高清完整版 | 免费看精品久久片 | 中文字幕久久久精品 | 日韩一级精品 | 国产精品福利视频 | 欧美性精品 | 在线导航av| 国产精品毛片久久蜜 | 奇米先锋 | 日韩精品在线看 | 国产精品久久久久四虎 | 五月婷婷六月综合 | 欧美a级片网站 | 亚洲成人精品av |