成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 用注解編寫創(chuàng)建表的SQL語句

用注解編寫創(chuàng)建表的SQL語句

熱門標(biāo)簽:千呼電話機器人可以試用嗎 互聯(lián)網(wǎng)電話外呼系統(tǒng) 電話機器人怎么代理商 電銷需要外呼系統(tǒng)嗎 家庭農(nóng)場地圖標(biāo)注名稱怎樣起名 我要地圖標(biāo)注數(shù)量有限制嗎 400電話辦理泰安 安卡拉地圖標(biāo)注app 零成本地圖標(biāo)注賺錢

今晚讀了think in java 的章節(jié),感覺很不錯,我就敲了下來,貼上代碼給以后一個回顧: 

建議提前讀一下think in java 注解 。 

說明創(chuàng)建注解我在第一個注解說明下,以后的注解不在說明。‘ 

DBTable 注解: 

/**
* Project Name:myannotation
* File Name:DBTable.java
* Package Name:com.iflytek.db
* Date:2016-8-28下午08:20:54
* Copyright (c) 2016, syzhao@iflytek.com All Rights Reserved.
*
*/

package com.iflytek.db;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
@Target:
   @Target說明了Annotation所修飾的對象范圍:Annotation可被用于 packages、types(類、接口、枚舉、Annotation類型)、類型成員(方法、構(gòu)造方法、成員變量、枚舉值)、方法參數(shù)和本地變量(如循環(huán)變量、catch參數(shù))。在Annotation類型的聲明中使用了target可更加明晰其修飾的目標(biāo)。
  作用:用于描述注解的使用范圍(即:被描述的注解可以用在什么地方)
  取值(ElementType)有:
    1.CONSTRUCTOR:用于描述構(gòu)造器
    2.FIELD:用于描述域
    3.LOCAL_VARIABLE:用于描述局部變量
    4.METHOD:用于描述方法
    5.PACKAGE:用于描述包
    6.PARAMETER:用于描述參數(shù)
    7.TYPE:用于描述類、接口(包括注解類型) 或enum聲明

 @Retention:
  @Retention定義了該Annotation被保留的時間長短:某些Annotation僅出現(xiàn)在源代碼中,而被編譯器丟棄;而另一些卻被編譯在class文件中;編譯在class文件中的Annotation可能會被虛擬機忽略,而另一些在class被裝載時將被讀?。ㄕ堊⒁獠⒉挥绊慶lass的執(zhí)行,因為Annotation與class在使用上是被分離的)。使用這個meta-Annotation可以對 Annotation的“生命周期”限制。
  作用:表示需要在什么級別保存該注釋信息,用于描述注解的生命周期(即:被描述的注解在什么范圍內(nèi)有效)
  取值(RetentionPoicy)有:
    1.SOURCE:在源文件中有效(即源文件保留)
    2.CLASS:在class文件中有效(即class保留)
    3.RUNTIME:在運行時有效(即運行時保留)
  Retention meta-annotation類型有唯一的value作為成員,它的取值來自java.lang.annotation.RetentionPolicy的枚舉類型值
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface DBTable
{
  public String name() default "";
}

Constraints 約束注解: 

/**
* Project Name:myannotation
* File Name:Constraints.java
* Package Name:com.iflytek.db
* Date:2016-8-28下午08:27:08
* Copyright (c) 2016, syzhao@iflytek.com All Rights Reserved.
*
*/

package com.iflytek.db;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Constraints
{
  boolean primaryKey() default false;
  
  boolean allowNull() default true;
  
  boolean unique() default false;
}

 SQLInteger int注解: 

/**
* Project Name:myannotation
* File Name:SQLInteger.java
* Package Name:com.iflytek.db
* Date:2016-8-29下午10:24:11
* Copyright (c) 2016, syzhao@iflytek.com All Rights Reserved.
*
*/

package com.iflytek.db;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SQLInteger
{
  String name() default "";
  
  Constraints constraints() default @Constraints;
}

 SQLString 字符注解: 

/**
* Project Name:myannotation
* File Name:SQLString.java
* Package Name:com.iflytek.db
* Date:2016-8-29下午10:28:04
* Copyright (c) 2016, syzhao@iflytek.com All Rights Reserved.
*
*/

package com.iflytek.db;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SQLString
{
  int value() default 0;
  
  String name() default "";
  
  Constraints constraints() default @Constraints;
}

 創(chuàng)建表的處理器:

/**
* Project Name:myannotation
* File Name:TableCreator.java
* Package Name:com.iflytek.table
* Date:2016-8-29下午10:57:52
* Copyright (c) 2016, syzhao@iflytek.com All Rights Reserved.
*
*/

package com.iflytek.table;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

import com.iflytek.db.Constraints;
import com.iflytek.db.DBTable;
import com.iflytek.db.SQLInteger;
import com.iflytek.db.SQLString;

public class TableCreator
{
  public static void main(String[] args)
  {
    createTable(Member.class);
  }
  
  //創(chuàng)建表SQL語句
  private static void createTable(Class?> cl)
  {
    //獲取DBTable注解
    DBTable dbTable = cl.getAnnotation(DBTable.class);
    //判斷DBTable注解是否存在
    if (dbTable == null)
    {
      System.out.println("沒有找到關(guān)于DBTable");
      return;
    }
    
    //如果@DBTable注解存在獲取表明 
    String tableName = dbTable.name();
    //判斷表名是否存在
    if (tableName.length()  1)
    {
      //不存在,說明默認(rèn)就是類名,通過 cl.getSimpleName()獲取類名并且大寫
      tableName = cl.getSimpleName().toUpperCase();
    }
    
    //定義獲取column的容器
    ListString> columnDefs = new ArrayListString>();
    //循環(huán)屬性字段
    //說明:getDeclaredFields()獲得某個類的所有申明的字段,即包括public、private和proteced,但是不包括父類的申明字段。 
    //getFields()獲得某個類的所有的公共(public)的字段,包括父類。 
    for (Field field : cl.getDeclaredFields())
    {
      //定義表字段名稱變量
      String columnName = null;
      //獲取字段上的注解(現(xiàn)在字段允許多個注解,因此返回的是數(shù)組)
      Annotation[] anns = field.getDeclaredAnnotations();
      //判斷屬性是否存在注解
      if (anns.length  1)
        continue;
      
      //判斷是否是我們定義的數(shù)據(jù)類型
      if (anns[0] instanceof SQLInteger)
      {
        //獲取SQLInteger 注解
        SQLInteger sInt = (SQLInteger)anns[0];
        //判斷是否注解的name是否有值
        if (sInt.name().length()  1)
        {
          //如果沒有值,說明是類的屬性字段,獲取屬性并轉(zhuǎn)換大寫
          columnName = field.getName().toUpperCase();
        }
        else
        { //如果有值,獲取設(shè)置的name值
          columnName = sInt.name();
        }
        //放到屬性的容器內(nèi)
        columnDefs.add(columnName + " INT " + getConstraints(sInt.constraints()));
      }
      
      //同上SQLInteger,這里不寫注釋了
      if (anns[0] instanceof SQLString)
      {
        SQLString sString = (SQLString)anns[0];
        if (sString.name().length()  1)
        {
          columnName = field.getName().toUpperCase();
        }
        else
        {
          columnName = sString.name();
        }
        columnDefs.add(columnName + " VARCHAR(" + sString.value() + ")" + getConstraints(sString.constraints()));
      }
      
      //定義生成創(chuàng)建表的SQL語句
      StringBuilder createCommand = new StringBuilder("CREATE TABLE " + tableName + "(");
      //循環(huán)上面屬性容器,
      for (String columnDef : columnDefs)
      {
        //把屬性添加到sql語句中
        createCommand.append("\n  " + columnDef + ",");
        //去掉最后一個逗號
        String tableCreate = createCommand.substring(0, createCommand.length() - 1) + ");";
        //打印
        System.out.println("Table creation SQL for " + cl.getName() + " is :\n" + tableCreate);
      }
    }
  }
  
  private static String getConstraints(Constraints con)
  {
    String constraints = "";
    //判斷是否為null
    if (!con.allowNull())
    {
      constraints += " NOT NULL ";
    }
    //判斷是否是主鍵
    if (con.primaryKey())
    {
      constraints += " PRIMARY KEY ";
    }
    //是否唯一
    if (con.unique())
    {
      constraints += " UNIQUE ";
    }
    
    return constraints;
  }
}

以上代碼拷貝出來,就可以運行了! 

上面雖然是簡單的創(chuàng)建表語句,但我們可以蔓延到hibernate的domain類里的注解,各種CURD ,何嘗不是這樣處理的呢,只是hibernate有很多東西,但是萬變不離其宗,以后有機會研究一下hibernate 。 

收獲: 

讀了以后,對于注解知道為什么要這么用了,其實顧名思義就是一個注解,只是有一個處理器來處理這個注解,這對我以后用到注解方面應(yīng)該有幫助的, 

時間不早了,就寫到這里!

結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Java 中的注解詳解及示例代碼
  • Android 中的注解深入探究
  • 深入分析安卓(Android)中的注解
  • Spring學(xué)習(xí)筆記1之IOC詳解盡量使用注解以及java代碼
  • Spring MVC 注解自動掃描失效原因分析
  • 深入淺析Java注解框架
  • 全面解析Java中的注解與注釋
  • 詳解Java注解教程及自定義注解
  • 小議Java中@param注解與@see注解的作用
  • Android 中的注解詳細(xì)介紹

標(biāo)簽:新鄉(xiāng) 池州 文山 大同 來賓 濱州 東營 黃山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用注解編寫創(chuàng)建表的SQL語句》,本文關(guān)鍵詞  用,注解,編寫,創(chuàng)建,表,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用注解編寫創(chuàng)建表的SQL語句》相關(guān)的同類信息!
  • 本頁收集關(guān)于用注解編寫創(chuàng)建表的SQL語句的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    怡红院视频网站| 国产精品视频一区国模私拍| 欧美精品日日鲁夜夜添| 色婷婷久久久久swag精品| 在线视频中文字幕第一页| 欧美日韩亚洲激情| 日本在线天堂| 亚洲五月天综合| 国产一区二区中文字幕免费看| 欧美福利在线播放| 天堂中文8资源在线8| 亚洲日本va中文字幕久久| 免费精品99久久国产综合精品应用| 红杏成人性视频免费看| 污污的网站在线观看| 亚洲精品一二| 日本中文视频| 偷拍与自拍一区| 国产精品97| 97婷婷涩涩精品一区| 白嫩情侣偷拍呻吟刺激| 亚洲成人日韩| 天天影视综合色| av在线第一页| 国产精品1区2区3区| 黄页网址大全免费观看| 91九色蝌蚪porny| 欧美性猛交xxx高清大费中文| 美女露胸一区二区三区| 九色国产在线观看| 在线视频亚洲专区| 米奇精品一区二区三区| 偷拍夫妻性生活| 一区二区三区中文| 亚洲a成v人在线观看| 99久久夜色精品国产亚洲狼| 无码人妻久久一区二区三区不卡| 羞羞的视频网站| 国产黄色网址在线观看| 国产又黄又粗又猛又爽的视频| 久久这里只有精品国产| 国产成人高清激情视频在线观看| 婷婷激情四射五月天| 欧美伊人亚洲伊人色综合动图| 青青草视频在线免费直播| 国产精品v日韩精品v在线观看| 日韩资源av在线| 国产最新免费视频| 一区二区三区福利| 综合久久久久| 在线免费看黄色| 日本中文字幕精品—区二区| 99re66热这里只有精品4| 成人av资源网站| 97精品人妻一区二区三区蜜桃| www.91香蕉视频| 久久av喷吹av高潮av| 91高清在线视频| 成人午夜精品福利免费| 亚洲综合在线播放| 亚洲一区 欧美| 国产欧美短视频| 亚洲精品国产suv一区88| 国产成人午夜精品5599| 日本黄色录像片| 正在播放欧美一区| 亚洲欧美日韩国产中文在线| 亚洲女厕所小便bbb| 成人久久久精品国产乱码一区二区| 黄色片网站在线| 午夜精品久久久久久久四虎美女版| av免费在线观看不卡| 亚洲日本国产精品| 尤物在线网址| 亚洲精品第一国产综合精品| 青青影院一区二区三区四区| 欧美一区二区黄片| 成人免费在线观看av| 激情五月综合网| 全球中文成人在线| 亚洲六月丁香色婷婷综合久久| 国产成人免费xxxxxxxx| 九九热这里只有| 懂色av色香蕉一区二区蜜桃| 中国极品少妇videossexhd| 色综合视频一区二区三区44| 久久久精品少妇| 久久久久亚洲av无码专区| 精品无码国产一区二区三区av| 成人在线观看免费视频| 日韩av一区二区三区在线观看| 777永久免费网站国产| 亚洲精品成人悠悠色影视| 日韩亚洲一区中文字幕| 欧美va天堂va视频va在线| 日本在线观看一区二区| 一区2区3区在线看| 亚洲v日本v欧美v久久精品| 亚洲精品成人网| 小说区图片区图片区另类灬| 日韩欧美国产另类| 欧美性猛交xxx| 中文天堂在线视频| 免费男女羞羞的视频网站在线观看| 欧美三级午夜理伦三级中视频| 一区二区三区四区亚洲| 亚洲欧洲一区二区三区在线观看| 少妇精品在线| 亚洲女人18毛片水真多| 在线视频国产一区| 91久久高清国语自产拍| 国产精品影院在线观看| 日韩精品在线观看av| 亚洲国产精品高清| 国产精品嫩草影院久久久| 国产原厂视频在线观看| 国产免费一区二区三区在线能观看| 中国特黄一级片| 国产精品揄拍100视频| 中国特黄一级片| 一区二区免费不卡在线| 蜜桃av色综合| 国产日本欧美视频| 久久久久久久久久久久久久国产| 超碰在线免费公开| 真实国产乱子伦精品一区二区三区| 欧美婷婷久久五月精品三区| 青娱乐精品视频| 国产日韩精品在线观看| 精品亚洲成a人在线观看| 国产裸体舞一区二区三区| 美女被到爽高潮视频| а√天堂8资源在线官网| 99在线视频免费| 久久久久久久久综合影视网| 久久久久久9999| 青青草国产精品视频| 亚洲天堂狠狠干| 色帝国亚洲欧美在线| 另类少妇人与禽zozz0性伦| 亚洲图片在线| 精品无人区一区二区三区竹菊| 亚洲 自拍 另类 欧美 丝袜| 黄色国产精品视频| 欧美 日韩 国产 在线观看| 欧美日韩免费一区| 黄色精品视频| 清纯唯美日韩制服另类| 天堂中文资源在线| 欧洲av无码放荡人妇网站| 西西裸体人体做爰大胆久久久| 国产精品视频流白浆免费视频| 老牛精品亚洲成av人片| 黄色污污视频软件| 国产富婆一级全黄大片| 六月婷婷综合| 欧美黑人猛交| 国产精品亚洲第一区| 亚洲图区欧美| 免费黄色在线看| 国产精品人人做人人爽| a'aaa级片在线观看| 欧美性生活大片免费观看网址| 国产视频在线观看视频| 国产伦精品一区二区三区免.费| 欧美一级特黄视频| 91九色蝌蚪嫩草| 日日噜噜噜噜人人爽亚洲精品| 日本一区二区三区中文字幕| 成人免费毛片糖心| 在线观看国产黄| 91丨九色丨蝌蚪丨对白| 精品视频黄色| 含羞草久久爱69一区| 丁香花电影在线观看完整版| 国产999精品久久久影片官网| 无码国产精品一区二区免费式直播| 在线人体午夜视频| 久久99国产精品99久久| 欧美一区二视频在线免费观看| 国产精品久久影视| 免费国产成人看片在线| 久久精品免费一区二区三区| 高清乱码免费看污| 咪咪色在线视频| 日韩在线a电影| 中文av在线全新| 2022中文字幕| 亚洲wwwav| 一本到不卡免费一区二区| 国产第一页在线| av小说在线播放| 性孕妇free特大另类| 做爰视频毛片视频| 久久亚洲国产精品日日av夜夜| yjizz国产| 国产视频播放| 久久久资源网| 免费一级a毛片| 久久久精品一区二区毛片免费看| 国产一区精品福利| 亚洲国产精品女人久久久| 成年网站在线观看| 奇米四色…亚洲| 人成在线免费网站| 交换国产精品视频一区| 国产一区二区网址| 婷婷六月综合网| 国产情侣一区二区| 色嗨嗨av一区二区三区| 亚洲男人天堂色| 国产原创视频在线观看| www日韩在线观看| 91农村精品一区二区在线| 麻豆视频久久| 欧美大片一区二区| 午夜免费一区| 亚洲妇熟xxxx妇色黄| 午夜视频福利在线| 亚洲天堂av在线播放| 婷婷激情在线| 蜜臀av亚洲一区中文字幕| 在线精品亚洲一区二区不卡| 亚洲精品在线视频观看| 91亚洲人成网污www| 国产乱国产乱300精品| 亚洲经典一区二区三区| 亚洲天堂av在线免费| 色综合久久久888| 激情影院在线观看| 99国产精品久久| av在线亚洲天堂| 在线成人精品视频| 欧美黄色片免费观看| 国产三级精品在线不卡| 亚洲一区二区| 成年人视频在线看| 中文字幕一区二区中文字幕| 欧美一区永久视频免费观看| 精品欧美日韩| 亚洲精品国产一区二区| 神马午夜一区二区| 四虎在线免费视频| 免费毛片在线看片免费丝瓜视频| 精品日韩av一区二区| 久久久久成人黄色影片| 亚洲精品自产拍在线观看app| 精品奇米国产一区二区三区| 怡红院精品视频在线观看极品| 国产精品久久波多野结衣| 欧美日韩精品一区二区| 一区二区三区国产在线观看| 日韩理论在线观看| 欧美在线激情视频| 欧美熟女一区二区| 日韩欧美在线中字| 最新av网站在线观看| 91福利视频免费观看| 俄罗斯一级**毛片在线播放| 欧美黑人双插| 国产精品 欧美激情| 天堂社区 天堂综合网 天堂资源最新版| 亚洲国产欧美一区| 国产亚洲成av人片在线观黄桃| 亚洲精品二区三区| 97久久精品人人做人人爽| 一区不卡视频| 国内精品久久久久国产盗摄免费观看完整版| 高清美女视频一区| 黄色激情在线观看| 欧美精品二区三区四区免费看视频| 美女黄色一级视频| 91精品国产综合久久小美女| 精品嫩模一区二区三区| 亚洲天堂男人天堂女人天堂| 亚洲高清视频免费观看| 欧美人与性动交| 四虎影院一区二区| 国产在线视频网| 女人在下体塞跳蛋在线观看| 精品日本一线二线三线不卡| 久久久久亚洲av成人网人人软件| 欧美精品与人动性物交免费看| 蜜臀av一区二区| 一本—道久久a久久精品蜜桃| 中文字幕另类日韩欧美亚洲嫩草| 日本熟妇人妻中出| 91在线精品秘密一区二区| 91成人免费观看网站| 亚洲国产aⅴ天堂久久| 福利视频网站一区二区三区| 日韩欧美美女在线观看| 国产美女永久免费| 中文字幕第12页| 日韩理论片久久| 欧美日韩国产综合一区二区| 久久久99999| 日韩美女精品在线| 狠狠色狠狠色综合网| 青青操在线视频观看| 日韩小视频在线观看专区| 在线亚洲一区观看| 久久艹在线视频| 日本强好片久久久久久aaa| 91精品国产自产在线| 国模吧一区二区三区| 夜夜揉揉日日人人青青一国产精品| 白嫩情侣偷拍呻吟刺激| 少妇一级淫免费观看| 日韩国产精品亚洲а∨天堂免| 亚洲wwwwww| 成人黄动漫网站免费| 久久久91精品国产一区二区精品| 狠狠色狠狠色综合网| 国产91精品久久久久久久网曝门| 国产在线高清视频| 99久久国产综合精品五月天喷水| 中文在线字幕免费观看| 国产精品亲子乱子伦xxxx裸| 国产精品极品美女在线观看免费| 中文一区一区三区免费在线观看| 三级视频网站在线| 欧美性猛交xxxx免费看久久久| 亚洲精品乱码久久久久久久| 美女脱光内衣内裤视频久久影院| 色综合视频一区中文字幕| 国产cdts系列另类在线观看| 日本a级片久久久|