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代码的章的更多相关文章

  1. JavaScript---网络编程(12)--DHTML技术演示(5)-form表单验证技术(正则)

    这里不进行很复杂的后台验证以及JavaScript的正则表达式,只是简单的介绍下这个技术,简单的后台接收与跳转,大概了解怎么验证的就可以.具体的技术,我后面还会继续写博客的.本人也还在学习中. 表单验 ...

  2. OneProxy分库分表演示--楼方鑫

    OneProxy分库分表演示 (杭州平民软件有限公司) OneProxy是为MySQL精心设计的数据访问层,可以为任何开发语言提供对MySQL数据库的智能数据路由功能,比如单点切换.读写分离.分库分表 ...

  3. java 线程、线程池基本应用演示样例代码回想

    java 线程.线程池基本应用演示样例代码回想 package org.rui.thread; /** * 定义任务 * * @author lenovo * */ public class Lift ...

  4. 2018-09-24 Java源码英翻中网页演示

    在线演示地址: 源代码翻译 两部分如下. 独立的Java代码翻译库 续前文代码翻译尝试-使用Roaster解析和生成Java源码 源码库: program-in-chinese/java_code_t ...

  5. java I/O进程控制,重定向 演示样例代码

    java I/O进程控制,重定向 演示样例代码 package org.rui.io.util; import java.io.*; /** * 标准I/O重定向 */ public class Re ...

  6. 基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表

    基于CDH5.x 下面使用eclipse 操作hive .使用java通过jdbc连接HIVESERVICE 创建表 import java.sql.Connection; import java.s ...

  7. Java 控制台输入数字 输出乘法表(代码练习)

    最近,回忆了一些刚学习Java时经常练习的一些小练习题.感觉还是蛮有趣的,在回顾时想起好多学习时的经历和坎坷,一道小小的练习题要研究半天,珍重过往,直面未来.下面贡献代码,Java 控制台输入数字 输 ...

  8. Java项目专栏之数据库建表

    Java项目专栏之数据库建表 数据库建表前期准备 1. 安装mysql:数据库语言,语法和sql server差不太多,如果习惯于sql server可以不用mysql. 2. 安装navicat:可 ...

  9. java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例

    java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例HttpClient 测试类,提供get post方法实例 package com.zdz.httpclient; i ...

随机推荐

  1. Knockout应用开发指南 第三章:绑定语法(3)

    原文:Knockout应用开发指南 第三章:绑定语法(3) 12   value 绑定 目的 value绑定是关联DOM元素的值到view model的属性上.主要是用在表单控件<input&g ...

  2. 【Unity3D自学记录】利用代码改动图片属性(Inspector)

    这段时间一直都在打包资源,然后每次导入都要改图片的属性.真是麻烦,所以一直在寻找一键改动而且打包的方法. 最终让我找到了,太坑人了. 依据自己的需求改代码哦,相信大家都能看明确. 核心部分: Text ...

  3. phpcms v9框架的目录结构分析

    phpcms v9框架的目录结构分析:      了解v9框架的目录结构,有助于帮助我们快速建立起对v9框架的一个整体认识 打开"mycms"项目,有如下文件和目录      使用 ...

  4. Scala Hello 示例

    object ScalaDemo1 {   def main(args: Array[String]) {     println("Hello,world!");   } }

  5. Connecting Docker for Cloud Services using SDN and Network Virtualization

     Abstract The explosive scale of container CPUs needs highly efficient network virtualization Chal ...

  6. document.getElementById()使用方法

    document.getElementById使用 语法:oElement = document .getElementById ( sID ) 參数:sID――必选项. 字符串 (String) . ...

  7. 再说JNDI

    说到JNDI,即熟悉又陌生,熟悉在常常使用,如EJB3.0中的@EJB注入,底层实现即是JNDI的方式:喜闻乐见的: Context ctx=new InitialContext(); Object ...

  8. 将本地文件上传到指定的服务器(HttpWebRequest方法)

    将本地文件上传到指定的服务器(HttpWebRequest方法),通过文件流,带文件名,同文件一同上传的表单文本域及值. ///<summary> /// 将本地文件上传到指定的服务器(H ...

  9. JDK源码学习系列02----AbstractStringBuilder

     JDK源码学习系列02----AbstractStringBuilder 因为看StringBuffer 和 StringBuilder 的源码时发现两者都继承了AbstractStringBuil ...

  10. 【剑指offer】打印单列表从尾部到头部

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25028525 剑指offer上的第五题,在九度OJ上測试通过. 时间限制:1 秒 内存限制 ...