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. xamarin跨平台iOS、Android 与Windows

    http://xamarin.csdn.net/ Xamarin是一个行动App开发平台,提供跨平台开发能力,开发人员透过Xamarin开发工具与程序语言,即可开发出iOS.Android 与Wind ...

  2. vi 按了ctrl+s之后

    再windows不管是写程序.还是用Word写文件.已经习惯了按ctrl+s 保存代码. 在用vi的时候.常常无意中按了ctrl+s,结果就是如同终端死掉了一样. 这是由于ctrl+s 终止屏幕输出( ...

  3. java中线程机制

    java中线程机制,一开始我们都用的单线程.现在接触到多线程了. 多线性首先要解决的问题是:创建线程,怎么创建线程的问题: 1.线程的创建: 四种常用的实现方法 1.继承Thread. Thread是 ...

  4. iOS游戏开发游戏功能之外的东西

    对于一个游戏的开发,我们除了完毕游戏的功能之外,还有多少东西我们须要考虑呢? 非常多.也非常烦! 但做过一遍之后下一次就会非常easy. 都有什么东西我们想加入到游戏其中呢? (1)分享功能 (2)评 ...

  5. MVC模块化架构

    全面解析ASP.NET MVC模块化架构方案 什么叫架构?揭开架构神秘的面纱,无非就是:分层+模块化.任意复杂的架构,你也会发现架构师也就做了这两件事. 本文将会全面的介绍我们团队在模块化设计方面取得 ...

  6. poj1185炮兵阵地

    #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> ...

  7. android 设置默认启动network mode

    network mode常见类型 WCDMA preferred : 0 GSM only : 1 WCDMA only : 2 GSM UMTS : 3 CDMA : 4 ... (参考RILCon ...

  8. iOS设备定位

    一.iOS谈到定位 1.SignInSignOutViewController.h @interface SignInSignOutViewController : UIViewController& ...

  9. Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程

    原文:Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程 Red Gate系列之三 SQL S ...

  10. C# 6.0 (C# vNext) 的新功能:Expression Bodied Functions and Properties

    Expression Bodied Function 它可以用在: methods user-defined operators type conversions read-only properti ...