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 ...
随机推荐
- IIS架构与HTTP请求处理流程
IIS架构与HTTP请求处理流程 Windows操作系统中的IIS负责提供互联网服务,一台运行了IIS的计算机可以看成是一台Web服务器. Windows XP SP2 中IIS主版本号为5,Wind ...
- Jersey的RESTful简单案例demo
REST基础概念: 在REST中的一切都被认为是一种资源. 每个资源由URI标识. 使用统一的接口.处理资源使用POST,GET,PUT,DELETE操作类似创建,读取,更新和删除(CRUD)操作. ...
- 64位CentOS5.6安装Mysql 5.5.11GA
1.更新并查看当前CentOS版本是否为5.6yum updatelsb_release -a 2.下载文件下载 bison-2.4.3.tar.gz到/usr/local/src下载 cmake-2 ...
- HDU 3954 Level up(线段树)
HDU 3954 Level up 题目链接 题意:k个等级,n个英雄,每一个等级升级有一定经验,每次两种操作,一个区间加上val,这样区间内英雄都获得当前等级*val的经验,还有一个操作询问区间经验 ...
- SQL Server :理解BCM页
原文:SQL Server :理解BCM页 今天我们来讨论下批量更改映射(Bulk Changed Map:BCM)页,还有大容量日志恢复模式( bulk logged recovery model ...
- POJ1502(Dijkstra)
MPI Maelstrom Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5538 Accepted: 3451 题目链 ...
- C++使用函数模板
函数模板: 函数模板是蓝图或处方功能,编译器使用其发电功能系列中的新成员. 第一次使用时,新的功能是创建.从功能模板生成的函数的实例称为模板或模板的实例.函数模板的开始是keywordtemplate ...
- iOS设备定位
一.iOS谈到定位 1.SignInSignOutViewController.h @interface SignInSignOutViewController : UIViewController& ...
- IOS设计模式学习(20)命令
1 前言 在面向对象中,把指令封装在各种命令对象中.命令对象可以被传递而且在指定时刻被不同的客户端复用.这一概念精心设计而来的设计模式叫做命令(Command)模式. 2 详述 2.1 简述 命令对象 ...
- [改变自己wordpress.2]至wordpress再加上简单的debug sql调试.
或者说,同事. 需要帮助她打印出来sql 调试输出到页面sql 在这里,我们使用插件或一个的方式来启动配置文件wordpress的debug 在插件文件夹 wordpress/wp-content/p ...