java注意事项演示 地图产生表 演示样本 来自thinking in java 4 20代码的章
java注意事项演示 地图产生表 演示样本 来自thinking in java 4 20代码的章
thinking in java 4免费下载:http://download.csdn.net/detail/liangrui1988/7580155
package org.rui.annotation.database; import java.lang.annotation.*;
/**
* 生成一个数据库表
* @author lenovo
*
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface DBTable {
public String name() default ""; }
package org.rui.annotation.database; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; /**
* sql类型
* @author lenovo
*
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SQLString {
int value() default 0;
String name() default "";
Constraints constraints() default @Constraints; }
package org.rui.annotation.database; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; /**
* sql类型
* @author lenovo
*
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SqlInteger {
int value() default 0;
String name() default "";
Constraints constraints() default @Constraints; }
package org.rui.annotation.database; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* javaBean域准备的注解
* @author lenovo
*
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Constraints {
boolean primaryKey() default false;
boolean allowNull() default true;
boolean unique() default false;
}
package org.rui.annotation.database;
/**
* 假设要令嵌入的@Constraints注解中的unique()元素为true 并以此作为constraints()元素的默认值
* 则须要例如以下定义该元素
* @author lenovo
*
*/
public @interface Uniqueness {
Constraints constraints() default @Constraints(unique=true);
}
package org.rui.annotation.database; @DBTable(name="MEMBER")
public class Member { @SQLString(30) String firstName;
@SQLString(50) String lastName;
@SqlInteger Integer age;
@SQLString(value=30,constraints=@Constraints(primaryKey=true))
String handle;
static int memberCount; //get
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public Integer getAge() {
return age;
}
public String getHandle() {
return handle;
} @Override
public String toString()
{
return handle;
} }
package org.rui.annotation.database; import java.io.ObjectInputStream.GetField;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
/**
* 相前资料请參考 thinking in java 第4版 20章
* @author lenovo
*
*/
public class TableCreator { //解释注解 获得对应的值
public static String getConstraints(Constraints con)
{
String constraints="";
if(con.allowNull())
constraints+="NOT NULL";
if(con.primaryKey())
constraints+="PRIMARY KEY";
if(con.unique())
constraints+="UNIQUE";
return constraints;
} public static void main(String[] args) throws ClassNotFoundException {
String[] arr=new String[]{"org.rui.annotation.database.Member"};
if (arr.length<1)
{
System.out.println("0000");
System.exit(0);
} for(String className:arr)
{
Class<?> clzz=Class.forName(className);
DBTable table=clzz.getAnnotation(DBTable.class);
if(table==null)
{
System.out.println("dbtable annotaions in class:"+className);
continue;
} String tableName=table.name();
if(tableName.length()<1)
tableName=clzz.getName().toUpperCase(); //结果集合
List<String> columnDefs=new ArrayList<String>(); //获取全部字段
for(Field f:clzz.getDeclaredFields())
{
String columnName =null;
//获取字段上面的注解
Annotation[] annot=f.getAnnotations();
if(annot.length<1)continue;
//假设是SqlInteger
if(annot[0] instanceof SqlInteger)
{
SqlInteger sInt=(SqlInteger)annot[0];
//假设没有指定名称 使用字段名称
if(sInt.name().length()<1)
{
columnName=f.getName().toUpperCase();
}else
{
columnName=sInt.name();
} columnDefs.add(columnName+" INT"+getConstraints(sInt.constraints()));
}
//假设是string 内型
if(annot[0] instanceof SQLString)
{
SQLString sStr=(SQLString)annot[0];
if(sStr.name().length()<1)
{
columnName=f.getName().toUpperCase();
}else
{
columnName=sStr.name();
}
columnDefs.add(columnName+" VARCHAR("+sStr.value()+")"+
getConstraints(sStr.constraints()));
} StringBuilder sql=new StringBuilder("CREATE TABLE "+tableName+"( ");
for(String c:columnDefs)
{
sql.append("\n "+c+",");//拼接字段
//remove trailing comma
String tableCreate=sql.substring(0,sql.length()-1)+");";
System.out.println("table ceration sql fro "+className+" is :\n "+tableCreate);
}
}
} } }
/**output:
table ceration sql fro org.rui.annotation.database.Member is :
CREATE TABLE MEMBER(
FIRSTNAME VARCHAR(30)NOT NULL);
table ceration sql fro org.rui.annotation.database.Member is :
CREATE TABLE MEMBER(
FIRSTNAME VARCHAR(30)NOT NULL);
table ceration sql fro org.rui.annotation.database.Member is :
CREATE TABLE MEMBER(
FIRSTNAME VARCHAR(30)NOT NULL,
LASTNAME VARCHAR(50)NOT NULL);
table ceration sql fro org.rui.annotation.database.Member is :
CREATE TABLE MEMBER(
FIRSTNAME VARCHAR(30)NOT NULL);
table ceration sql fro org.rui.annotation.database.Member is :
CREATE TABLE MEMBER(
FIRSTNAME VARCHAR(30)NOT NULL,
LASTNAME VARCHAR(50)NOT NULL);
table ceration sql fro org.rui.annotation.database.Member is :
CREATE TABLE MEMBER(
FIRSTNAME VARCHAR(30)NOT NULL,
LASTNAME VARCHAR(50)NOT NULL,
AGE INTNOT NULL);
table ceration sql fro org.rui.annotation.database.Member is :
CREATE TABLE MEMBER(
FIRSTNAME VARCHAR(30)NOT NULL);
table ceration sql fro org.rui.annotation.database.Member is :
CREATE TABLE MEMBER(
FIRSTNAME VARCHAR(30)NOT NULL,
LASTNAME VARCHAR(50)NOT NULL);
table ceration sql fro org.rui.annotation.database.Member is :
CREATE TABLE MEMBER(
FIRSTNAME VARCHAR(30)NOT NULL,
LASTNAME VARCHAR(50)NOT NULL,
AGE INTNOT NULL);
table ceration sql fro org.rui.annotation.database.Member is :
CREATE TABLE MEMBER(
FIRSTNAME VARCHAR(30)NOT NULL,
LASTNAME VARCHAR(50)NOT NULL,
AGE INTNOT NULL,
HANDLE VARCHAR(30)NOT NULLPRIMARY KEY); */
java注意事项演示 地图产生表 演示样本 来自thinking in java 4 20代码的章的更多相关文章
- JavaScript---网络编程(12)--DHTML技术演示(5)-form表单验证技术(正则)
这里不进行很复杂的后台验证以及JavaScript的正则表达式,只是简单的介绍下这个技术,简单的后台接收与跳转,大概了解怎么验证的就可以.具体的技术,我后面还会继续写博客的.本人也还在学习中. 表单验 ...
- OneProxy分库分表演示--楼方鑫
OneProxy分库分表演示 (杭州平民软件有限公司) OneProxy是为MySQL精心设计的数据访问层,可以为任何开发语言提供对MySQL数据库的智能数据路由功能,比如单点切换.读写分离.分库分表 ...
- java 线程、线程池基本应用演示样例代码回想
java 线程.线程池基本应用演示样例代码回想 package org.rui.thread; /** * 定义任务 * * @author lenovo * */ public class Lift ...
- 2018-09-24 Java源码英翻中网页演示
在线演示地址: 源代码翻译 两部分如下. 独立的Java代码翻译库 续前文代码翻译尝试-使用Roaster解析和生成Java源码 源码库: program-in-chinese/java_code_t ...
- java I/O进程控制,重定向 演示样例代码
java I/O进程控制,重定向 演示样例代码 package org.rui.io.util; import java.io.*; /** * 标准I/O重定向 */ public class Re ...
- 基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表
基于CDH5.x 下面使用eclipse 操作hive .使用java通过jdbc连接HIVESERVICE 创建表 import java.sql.Connection; import java.s ...
- Java 控制台输入数字 输出乘法表(代码练习)
最近,回忆了一些刚学习Java时经常练习的一些小练习题.感觉还是蛮有趣的,在回顾时想起好多学习时的经历和坎坷,一道小小的练习题要研究半天,珍重过往,直面未来.下面贡献代码,Java 控制台输入数字 输 ...
- Java项目专栏之数据库建表
Java项目专栏之数据库建表 数据库建表前期准备 1. 安装mysql:数据库语言,语法和sql server差不太多,如果习惯于sql server可以不用mysql. 2. 安装navicat:可 ...
- java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例
java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例HttpClient 测试类,提供get post方法实例 package com.zdz.httpclient; i ...
随机推荐
- MongoDB 基础命令——数据库表的增删改查——遍历操作表中的记录
分组排序查询最大记录 //对 "catagory" 不等于 null 的数据进行分组查询,且查询结果倒序 db.getCollection('userAccount').aggre ...
- 学习OpenCV第0天
自2011年接触OpenCV已经有几年了,一直停留在写一些小程序,利用手冊完毕一些任务,一直没有深入研究当中代码,现在毕业,但各种原因未能进入图像处理行业,故现重学OpenCV,包含分析代码,学习算法 ...
- RTF 格式 说明
摘要: 本文对RTF文件格式进行分析研究,对RTF文件结构及特性进行了阐述,并分别列举了几个有用性的样例进行具体分析, 终于通过VB程序代码实现了一个RTF书写器(不具有所见即所得特性).本文对软件开 ...
- BestCoder Round#11div2 1003
----- 有时候如果枚举起点超时,那么试试枚举终点. 枚举每一个i为终点(0<= i < n),且维护起点下标startPos 对于终点i,cnt[str[i]] ++, 如果小于等 ...
- 小技巧,把execl.exe转换成dll
小技巧 把execl.exe转换成dll1.把excel.exe复制到CProgram FilesMicrosoft Visual Studio .NET 2003SDKv1.1Bin夹中,和TlbI ...
- Moran’s I空间统计中出现内存溢出的问题
在经济学.资源管理.生物地理学.政治地理学和人口统计等领域,经常会有如下的研究需求: 研究区域中的富裕区和贫困区之间的最清晰边界在哪里? 研究区域中存在可以找到异常消费模式的位置吗? 研究区域中意想不 ...
- mysql安装前的系统准备工作(转)
一.系统环境总结:
- HDU1698_Just a Hook(线段树/成段更新)
解题报告 题意: 原本区间1到n都是1,区间成段改变成一个值,求最后区间1到n的和. 思路: 线段树成段更新,区间去和. #include <iostream> #include < ...
- 【JAVA高级】——myEclipse连接mysql启动数据库服务
背景: DRP项目要求使用Oracle数据库,但眼下因为种种原因,临时还装不了Oracle.但也不能闲着啊,就拿mysql来试试.安装完mysql以后,使用myEclipse连接数据库,就一直报错,报 ...
- 开源Math.NET基础数学类库使用(15)C#计算矩阵行列式
原文:[原创]开源Math.NET基础数学类库使用(15)C#计算矩阵行列式 本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p ...