技术标签: JAVA image java string import 数据库 float
JDBC读取数据库元数据,生成JAVA实体类
package com.nffish.util;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import com.nffish.common.DBSession;
public class GenEntityTool {
private String tablename = "petDiary";
private String[] colnames; // 列名数组
private String[] colTypes; // 列名类型数组
private int[] colSizes; // 列名大小数组
private boolean f_util = false; // 是否需要导入包java.util.*
private boolean f_sql = false; // 是否需要导入包java.sql.*
public GenEntityTool() {
Connection conn = DBSession.getConnection(); // 得到数据库连接
String strsql = "select * from " + tablename;
try {
PreparedStatement pstmt = conn.prepareStatement(strsql);
ResultSetMetaData rsmd = pstmt.getMetaData();
int size = rsmd.getColumnCount(); // 共有多少列
colnames = new String[size];
colTypes = new String[size];
colSizes = new int[size];
for (int i = 0; i < rsmd.getColumnCount(); i++) {
colnames[i] = rsmd.getColumnName(i + 1);
colTypes[i] = rsmd.getColumnTypeName(i + 1);
if (colTypes[i].equalsIgnoreCase("datetime")) {
f_util = true;
}
if (colTypes[i].equalsIgnoreCase("image")
|| colTypes[i].equalsIgnoreCase("text")) {
f_sql = true;
}
colSizes[i] = rsmd.getColumnDisplaySize(i + 1);
}
String content = parse(colnames, colTypes, colSizes);
try {
FileWriter fw = new FileWriter(initcap(tablename) + ".java");
PrintWriter pw = new PrintWriter(fw);
pw.println(content);
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBSession.closeConnection(conn);
}
}
/**
* 解析处理(生成实体类主体代码)
*/
private String parse(String[] colNames, String[] colTypes, int[] colSizes) {
StringBuffer sb = new StringBuffer();
if (f_util) {
sb.append("import java.util.Date;/r/n");
}
if (f_sql) {
sb.append("import java.sql.*;/r/n/r/n/r/n");
}
sb.append("public class " + initcap(tablename) + " {/r/n");
processAllAttrs(sb);
processAllMethod(sb);
sb.append("}/r/n");
System.out.println(sb.toString());
return sb.toString();
}
/**
* 生成所有的方法
*
* @param sb
*/
private void processAllMethod(StringBuffer sb) {
for (int i = 0; i < colnames.length; i++) {
sb.append("/tpublic void set" + initcap(colnames[i]) + "("
+ sqlType2JavaType(colTypes[i]) + " " + colnames[i]
+ "){/r/n");
sb.append("/t/tthis." + colnames[i] + "=" + colnames[i] + ";/r/n");
sb.append("/t}/r/n");
sb.append("/tpublic " + sqlType2JavaType(colTypes[i]) + " get"
+ initcap(colnames[i]) + "(){/r/n");
sb.append("/t/treturn " + colnames[i] + ";/r/n");
sb.append("/t}/r/n");
}
}
/**
* 解析输出属性
*
* @return
*/
private void processAllAttrs(StringBuffer sb) {
for (int i = 0; i < colnames.length; i++) {
sb.append("/tprivate " + sqlType2JavaType(colTypes[i]) + " "
+ colnames[i] + ";/r/n");
}
}
/**
* 把输入字符串的首字母改成大写
*
* @param str
* @return
*/
private String initcap(String str) {
char[] ch = str.toCharArray();
if (ch[0] >= ‘a’ && ch[0] <= ‘z’) {
ch[0] = (char) (ch[0] – 32);
}
return new String(ch);
}
private String sqlType2JavaType(String sqlType) {
if (sqlType.equalsIgnoreCase("bit")) {
return "bool";
} else if (sqlType.equalsIgnoreCase("tinyint")) {
return "byte";
} else if (sqlType.equalsIgnoreCase("smallint")) {
return "short";
} else if (sqlType.equalsIgnoreCase("int")) {
return "int";
} else if (sqlType.equalsIgnoreCase("bigint")) {
return "long";
} else if (sqlType.equalsIgnoreCase("float")) {
return "float";
} else if (sqlType.equalsIgnoreCase("decimal")
|| sqlType.equalsIgnoreCase("numeric")
|| sqlType.equalsIgnoreCase("real")) {
return "double";
} else if (sqlType.equalsIgnoreCase("money")
|| sqlType.equalsIgnoreCase("smallmoney")) {
return "double";
} else if (sqlType.equalsIgnoreCase("varchar")
|| sqlType.equalsIgnoreCase("char")
|| sqlType.equalsIgnoreCase("nvarchar")
|| sqlType.equalsIgnoreCase("nchar")) {
return "String";
} else if (sqlType.equalsIgnoreCase("datetime")) {
return "Date";
}
else if (sqlType.equalsIgnoreCase("image")) {
return "Blob";
} else if (sqlType.equalsIgnoreCase("text")) {
return "Clob";
}
return null;
}
public static void main(String[] args) {
new GenEntityTool();
}
}
网页中form表单的元素会出现一些问题:比如文本域和按钮对齐问题,这个问题会影响到界面的美观度,本文将介绍如何解决此类问题,需要了解的朋友可以参考下文字要包含在label标签中,并设置行高,否则文字会与文本框的顶 端对齐。文本框要设置vertical-align:middle;否则文本框与button顶端对齐。button中文字垂直居中,要设置高和行高,行高要小于高。 对input标记设定样式...
1、TinyXML 引用网上的原话:TinyXML是目前非常流行的一款基于DOM模型的XML解析器,简单易用且小巧 玲珑,非常适合存储简单数据,配置文件,对象序列化等数据量不是很大的操作。支持对XML的读取和修改,不直接支持XPath,需要借助另一个相关的类库TinyXPath才可以支持XPath。 TinyXML源码是使用C++语言编写的,这对于C++应用来说是很好
由于大数据技术涉及内容太庞杂,大数据应用领域广泛,而且各领域和方向采用的关键技术差异性也会较大,难以三言两语说清楚,本文从数据科学和大数据关键技术体系角度,来说说大数据的核心技术什么,到底要怎么学习它,以及怎么避免大数据学习的误区,以供参考。在这里还是要推荐下我自己建的大数据学习交流群:199427210,群里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件...
MFC中的CString类使用方法指南原文出处:codeproject:CString Management【禾路:这是一篇比较老的资料了,但是对于MFC的程序设计很有帮助。我们在MFC中使用字符串的相关操作,首先想到的就应该啊是CString,而不是char*或者string。那么关于CString 的相关内容,在这篇文章中就很好的解释。我解决了一个具体的问题/////显示结果CStr...
Swagger2异常:java.lang.NumberFormatException:For input string:""最近在springboot2.x项目中整合swagger2.9.2版本时,在进行在线接口测试时,出现java.lang.NumberFormatException:For input string:""的异常,针对此问题,小紫也在度娘上寻找了许多方法,也进行了一系列的尝试...
单例作为最传统的设计模式,我相信会被最多小伙伴使用问起单例的特性,小伙伴们肯定会说,保证内存中只有一个单例对象,可以共享。但是,实际上这只是在单线程中是安全的,如果在多线程中,单例的使用就要格外小心,很多情况会因为数据的操作导致系统崩溃。 话不多说,直接上代码单例代码:public class SingleTon { private static SingleTo...
题目链接:https://www.luogu.com.cn/problemnew/solution/P4447 P4447 [AHOI2018初中组]分组题目描述小可可的学校信息组总共有n 个队员,每个人都有一个实力值a[i]a[i]。现在,一年一度的编程大赛就要到了,小可可的学校获得了若干个参赛名额,教练决定把学校信息组的nn...
异常原因:资源合并发生错误,drawable使用的图片资源有问题解决办法:在build.gradle中·添加 aaptOptions.cruncherEnabled = false aaptOptions.useNewCruncher = false两行代码即可添加完效果如下android { compileSdkVersion 25 buildTool...
@Configuration和@Component的区别基于Java的配置我们通常使用@Configuration注解来声明Spring Bean除此之外我们还能使用@Component声明Spring Bean上面两段代码除Config类上的注解不同之外其他都相同,但Spring对两者的处理方式是完全不一样的。第一段代码会像我们期望的一样正常运行,因为new SimpleBeanConsumer(simpleBean())这段代码中simpleBean()方法会由Spr...
约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如:有10个人围成一圈,给他们各自编号0~9,从0号开始数,数到3的人被杀,然后被杀的下一个人重新从1开始数,依次执行,直到剩下最后一个人。解题思路:使用单向循环链表,按照报数的次数移动指针,到达报数的节点后将这个节点删除; 每次执行前先判断链表的长度,如果长度为1,那么代...
文章目录前言1. 图形化桌面配置 VNC 远程连接1.1. 安装 VNC 服务1.2. 临时启用 VNC 远程连接1.2.1. 单终端启用 VNC 远程连接1.2.2. 多终端启用 VNC 远程连接1.3. 开机自启动 VNC 服务实现远程连接1.3.1. 设置以 root 用户身份远程连接1.3.2. 设置以普通用户身份远程连接2. 最小化安装配置 VNC 远程连接3. 关于 VNC 的其它说明3.1. 几条简单的 vnc 维护命令3.2. 关于远程桌面模糊的处理方法总结前言前段时间因为一个项目我需
任务:利用Python爬虫的相关知识爬取学校信息门户的相关知识Python的相关库:requests库,bs4库,re库,pymysql库需要解决的关键问题:1.利用requests进行模拟登录,并用session保持会话。2.利用bs4库对登录后的页面进行解析,获取网页新闻的链接。3.利用bs4库和re库如何对新闻页面进行解析,获取新闻的内容。4.利用bs4库爬取新闻内容,并利用pymysq...