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. 循环多少次? 【杭电--HDOJ-1799】 附题+具体解释

    循环多少次? Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  2. JS 在 HTML 无缝滚动

    marquee图片无缝滚动先了解一下对象的几个的属性:innerHTML: 设置或获取位于对象起始和结束标签内的 HTMLscrollHeight: 获取对象的滚动高度.scrollLeft: 设置或 ...

  3. Spring中Quartz动态设置cronExpression

    字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN- ...

  4. testing and SQA_动态白盒測试

    一.软件測试技术: 黑盒:在不知道程序内部结构,仅仅知道程序结构的情况下採用的測试技术或策略. 白盒:在知道程序内部结构的情况下採用的測试技术或策略. 两种測试方法从不同的角度出发,反映了软件的不同側 ...

  5. Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍

    原文 Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍 前言 不同于iOS,Xamarin 在Visual Studio中针对Android,可以直接设 ...

  6. 项目架构mvc+webapi

    mvc+webapi 项目架构 首先项目是mvc5+webapi2.0+orm-dapper+ef codefirst. 1.项目框架层次结构: 这个mvc项目根据不同的业务和功能进行不同的区域划分, ...

  7. POJ1811_Prime Test【Miller Rabin素数测试】【Pollar Rho整数分解】

    Prime Test Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 29193 Accepted: 7392 Case Time ...

  8. 新项目架构从零开始(三)------基于简单ESB的服务架构

    这几个月一直在修改架构,所以迟迟没有更新博客. 新的架构是一个基于简单esb的服务架构,主要构成是esb服务注册,wcf服务,MVC项目构成. 首先,我门来看一看解决方案, 1.Common 在Com ...

  9. simpleDateFormat日期格式转换

    1------------------------------------------------------------------------------------- package com.n ...

  10. windbg更改cmd的token提升其特权

    采用windbg 调试xp. 执行cmd.whoami检查权限如下面: 以下要做的就是把cmd.exe 的token值用system的token替换. 1.  Ctrl + break ,windbg ...