版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Java 注解(Annotation)(1) Annotation( 注釋)是JDK5.0及以后版本引入的。它可以用于創(chuàng)建文檔,跟蹤代碼中的依賴性,甚至執(zhí)行基本編譯時檢查。注釋是以注釋名在代碼中存在的,根據(jù)注釋參數(shù)的個數(shù),我們可以將注釋分為:標(biāo)記注釋、單值注釋、完整注釋三類。它們都不會直接影響到程序的語義,只是作為注釋(標(biāo)識)存在,我們可以通過反射機(jī)制編程實現(xiàn)對這些元數(shù)據(jù)的訪問。另外,你可以在編譯時選擇代碼里的注釋是否只存在于源代碼級,或者它也能在class文件中出現(xiàn)。元數(shù)據(jù)的作用如果要對于元數(shù)據(jù)的作用進(jìn)行分類,目前還沒有明確的定義,不過我們可以根據(jù)它所起的作用,大致可分為三類:編寫文檔:通過
2、代碼里標(biāo)識的元數(shù)據(jù)生成文檔。代碼分析:通過代碼里標(biāo)識的元數(shù)據(jù)對代碼進(jìn)行分析。編譯檢查:通過代碼里標(biāo)識的元數(shù)據(jù)讓編譯器能實現(xiàn)基本的編譯檢查?;緝?nèi)置注釋Java代碼1. package com.iwtxokhtd.annotation;2. /*3. *測試Override注解4. * author Administrator5. *6. */7. public class OverrideDemoTest 8.9. /Override10. public String tostring()11. return "測試注釋"12. 13. package com.iwtxok
3、htd.annotation;/*測試Override注解 * author Administrator*/public class OverrideDemoTest /Overridepublic String tostring()return "測試注釋"Deprecated的作用是對不應(yīng)該在使用的方法添加注釋,當(dāng)編程人員使用這些方法時,將會在編譯時顯示提示信息,它與 javadoc里的deprecated標(biāo)記有相同的功能,準(zhǔn)確的說,它還不如javadoc deprecated ,因為它不支持參數(shù),使用Deprecated 的示例代碼示例如下:Java代碼1. pack
4、age com.iwtxokhtd.annotation;2. /*3.*測試Deprecated 注解4.* author Administrator5.6.*/7. public class DeprecatedDemoTest 8.public static void main(String口 args) 9./使用DeprecatedClass里聲明被過時的方法10.DeprecatedClass.DeprecatedMethod();11.12. 13. class DeprecatedClass14.Deprecated15.public static void Deprecate
5、dMethod() 16.17.package com.iwtxokhtd.annotation;/*測試Deprecated 注解* author Administrator*/public class DeprecatedDemoTest public static void main(String args) /使用DeprecatedClass里聲明被過時的方法DeprecatedClass.DeprecatedMethod();class DeprecatedClassDeprecatedpublic static void DeprecatedMethod() SuppressWa
6、rnings, 其參數(shù)有:deprecation ,使用了過時的類或方法時的警告unchecked ,執(zhí)行了未檢查的轉(zhuǎn)換時的警告Break時的警告fallthrough ,當(dāng)Switch程序塊直接通往下一種情況而沒有path ,在類路徑、源文件路徑等中有不存在的路徑時的警告serial ,當(dāng)在可序列化的類上缺少serialVersionUID 定義時的警告finally ,任何finally 子句不能正常完成時的警告all ,關(guān)于以上所有情況的警告Java代碼1. package com.iwtxokhtd.annotation;2.3. import java.util.ArrayList;
7、4. import java.util.List;5.6. public class SuppressWarningsDemoTest 7.9.8. public static List list=new ArrayList();SuppressWarnings("unchecked")10.public void add(String data)11. list.add(data);12. 13. package com.iwtxokhtd.annotation;import java.util.ArrayList;import java.util.List;public
8、 class SuppressWarningsDemoTest public static List list=new ArrayList();SuppressWarnings("unchecked")public void add(String data)list.add(data);(2)自定義注釋interface,如下例:它類似于新創(chuàng)建一個接口類文件,但為了區(qū)分,我們需要將它聲明為Java代碼1. public interface NewAnnotation 2. )public interface NewAnnotation )使用自定義的注釋類型Java代碼1.
9、 public class AnnotationT est 2. NewAnnotation3.public static void main(String口 args) 4.5. )public class AnnotationT est NewAnnotationpublic static void main(String args) )為自定義注釋添加變量Java代碼1. public interface NewAnnotation 2. String value();public interface NewAnnotation String value();)Java代碼1. publ
10、ic class AnnotationT est 2. NewAnnotation("main method")3. public static void main(String口 args) 4. saying();5. )6. NewAnnotation(value = "say method")7. public static void saying() 8. )9. ) public class AnnotationT est NewAnnotation("main method") public static void ma
11、in(String args) saying();NewAnnotation(value = "say method")public static void saying() 定義一個枚舉類型,然后將參數(shù)設(shè)置為該枚舉類型,并賦予默認(rèn)值Java代碼1. public interface Greeting 2. public enum FontColor3.BLUE,RED,GREEN4. );5. String name();6. FontColor fontColor() default FontColor.RED;7. )public interface Greeting
12、 public enum FontColorBLUE,RED,GREEN;String name();FontColor fontColor() default FontColor.RED;這里有兩種選擇,其實變數(shù)也就是在賦予默認(rèn)值的參數(shù)上,我們可以選擇使用該默認(rèn)值,也可以重新設(shè)置一個值來替換默認(rèn)值Java代碼1. NewAnnonation("main method")2. public static void main(String args) 3. saying();4. sayHelloWithDefaultFontC010r();5. sayHelloWithRe
13、dFontC010r();6.7. 8. NewAnnonation("say method")9. public static void saying()10.11. 12. /此時的fontC010r 為默認(rèn)的RED13. Greeting(name="defaultfontcolor")14. public static void sayHelloWithDefaultFontC010r()15.16. 17. 現(xiàn)在將 fontColor 改為 BLUE18. Greeting(name="notdefault",fontCol
14、or=Greeting.FontColor.BLUE)19. public static void sayHelloWithRedFontC010r() 20. NewAnnonation("main method")public static void main(String args) saying();sayHelloWithDefaultFontC010r();sayHelloW讓hRedFontC010r();NewAnnonation("say method") public static void saying()此時的fontColor
15、為默認(rèn)的RED Greeting(name="defaultfontcolor")public static void sayHelloWithDefaultFontC010r() /現(xiàn)在將fontColor 改為BLUEGreeting(name="notdefault",fontColor=Greeting.FontColor.BLUE) public static void sayHelloWithRedFontC010r() (3)注釋的高級應(yīng)用限制注釋的使用范圍用丁2931指定ElementType 屬性Java代碼1. package jav
16、a.lang.annotation;2. public enum ElementType 3. TYPE,4. /用于類,接口,枚舉但不能是注釋5. FIELD,6. /字段上,包括枚舉值7. METHOD,9. PARAMETER,10. /方法的參數(shù)11. CONSTRUCTOR,12. /構(gòu)造方法13. LOCAL_VARIABLE,14. /本地變量或 catch語句15. ANNOTATION_TYPE,16. /注釋類型(無數(shù)據(jù))17. PACKAGE18. / Java 包19. package java.lang.annotation;public enum ElementTy
17、pe TYPE,/用于類,接口,枚舉但不能是注釋FIELD,/字段上,包括枚舉值METHOD,/方法,不包括構(gòu)造方法PARAMETER,/方法的參數(shù)CONSTRUCTOR,/構(gòu)造方法LOCAL_VARIABLE,/本地變量或 catch語句ANNOTATION_TYPE,/注釋類型(無數(shù)據(jù))PACKAGE/ Java 包注解保持性策略Java代碼1. /限制注解使用范圍2. T arget(ElementType.METHOD,ElementType.CONSTRUCTOR)3. public interface Greeting 4.5. /使用枚舉類型6. public enum Font
18、Color7. BLUE,RED,GREEN8. ;9. String name();10. FontColor fontC010ro default FontColor.RED;11. /限制注解使用范圍Target(ElementType.METHOD,ElementType.CONSTRUCTOR)public interface Greeting /使用枚舉類型public enum FontColorBLUE,RED,GREEN;String name();FontColor fontC010ro default FontColor.RED;在Java編譯器編譯時,它會識別在源代碼里
19、添加的注釋是否還會保留,這就是RetentionPolicy 。下面是 Java 定義的 RetentionPolicy 枚舉:編譯器的處理有三種策略:將注釋保留在編譯后的類文件中,并在第一次加載類時讀取它將注釋保留在編譯后的類文件中,但是在運行時忽略它按照規(guī)定使用注釋,但是并不將它保留到編譯后的類文件中Java代碼1. package java.lang.annotation;2. public enum RetentionPolicy 3. SOURCE,4. /此類型會被編譯器丟棄5. CLASS,6. /此類型注釋會保留在 class文件中,但JVM會忽略它7. RUNTIME8. /
20、此類型注釋會保留在 class文件中,JVM會讀取它9. )package java.lang.annotation;public enum RetentionPolicy SOURCE,/此類型會被編譯器丟棄CLASS,/此類型注釋會保留在 class文件中,但JVM會忽略它RUNTIME/此類型注釋會保留在 class文件中,JVM會讀取它)Java代碼1. /讓保持性策略為運行時態(tài),即將注解編碼到class文件中,讓虛擬機(jī)讀取2. Retention(RetentionPolicy.RUNTIME)3. public interface Greeting 4.5./使用枚舉類型6. pu
21、blicenum FontColor7. BLUE,RED,GREEN8. ;9. Stringname();10. FontColor fontC010ro default FontColor.RED;11. 讓保持性策略為運行時態(tài),即將注解編碼到class文件中,讓虛擬機(jī)讀取Retention(RetentionPolicy.RUNTIME)public interface Greeting /使用枚舉類型public enum FontColorBLUE,RED,GREEN;String name();FontColor fontC010ro default FontColor.RED;
22、Java提供的Documented元注釋跟Javadoc的作用是差不多的,其實它存在的好處是開發(fā)人員可以定制Javadoc不支持的文檔屬性,并在開發(fā)中應(yīng)用。它的使用跟前兩個也是一樣的, 簡單代碼示例如下:Java代碼1. /讓它定制文檔化功能2. /使用此注解時必須設(shè)置RetentionPolicy 為RUNTIME3. Documented4. public interface Greeting 5.6. /使用枚舉類型7. public enum FontColor8. BLUE,RED,GREEN9. ;10. String name();11. FontColor fontC010ro
23、 default FontColor.RED;12. /使用此注解時必須設(shè)置RetentionPolicy 為RUNTIMEDocumentedpublic interface Greeting /使用枚舉類型public enum FontColorBLUE,RED,GREEN;String name();FontColor fontC010ro default FontColor.RED;標(biāo)注繼承Java代碼1. /讓它允許繼承,可作用到子類2. Inherited3. public interface Greeting 4.5. /使用枚舉類型6. publicenum FontColo
24、r7. BLUE,RED,GREEN8. ;9. Stringname();10. FontColor fontC010ro default FontColor.RED;11. 讓它允許繼承,可作用到子類Inheritedpublic interface Greeting /使用枚舉類型public enum FontColorBLUE,RED,GREEN;String name();FontColor fontC010ro default FontColor.RED;(4)讀取注解信息屬于重點,在系統(tǒng)中用到注解權(quán)限時非常有用,可以精確控制權(quán)限的粒度Java代碼1. package com.i
25、wtxokhtd.annotation;2. import java.lang.annotation.Annotation;3. import java.lang.reflect.Method;4.5. 讀取注解信息6. public class ReadAnnotationInfoTest 7. public static void main(String args)throws Exception est");8. /測試AnnotationTest 類,得到此類的類對象9. Class c=Class.forName("com.iwtxokhtd.annotation
26、.AnnotationT10. /獲取該類所有聲明的方法11. Method 口methods=c.getDeclaredMethods();12. /聲明注解集合13. Annotation annotations;14. /遍歷所有的方法得到各方法上面的注解信息15. for(Method method:methods)16. /獲取每個方法上面所聲明的所有注解信息17. annotations=method.getDeclaredAnnotations();18. 再遍歷所有的注解,打印其基本信息19. for(Annotation an:annotations)20. System.o
27、ut.println(" 方法名為:"+method.getName()+" 其上面的注解為:"+an.annotationType().getSimpleName();21. Method 口meths=an.annotationType().getDeclaredMethods();22. /遍歷每個注解的所有變量23. for(Method meth:meths)24. System.out.println(" 注解的變量名為:"+meth.getName();25. 26.27. 28. 29.30. 31.32. packa
28、ge com.iwtxokhtd.annotation;import java.lang.annotation.Annotation;import java.lang.reflect.Method;/讀取注解信息public class ReadAnnotationInfoTest public static void main(String口 args)throws Exception /測試AnnotationTest 類,得到此類的類對象Class c=Class.forName("com.iwtxokhtd.annotation.AnnotationTest");/
29、獲取該類所有聲明的方法Method 口methods=c.getDeclaredMethods();/聲明注解集合Annotation口 annotations;/遍歷所有的方法得到各方法上面的注解信息for(Method method:methods)/獲取每個方法上面所聲明的所有注解信息annotations=method.getDeclaredAnnotations();/再遍歷所有的注解,打印其基本信息for(Annotation an:annotations)System.out.println(" 方法名為:"+method.getName()+" 其
30、上面 的注解為: "+an.annotationType().getSimpleName();Method 口meths=an.annotationType().getDeclaredMethods();/遍歷每個注解的所有變量for(Method meth:meths)System.out.println(" 注解的變量名為:"+meth.getName();)利用自定義Java注解實現(xiàn)資源注入這里是想介紹一下如何通過Java的注解機(jī)制,實現(xiàn)對 bean資源的注入。主要介紹實現(xiàn)的方法,至于例子的實用性不必討論。需求:一個應(yīng)用有兩個數(shù)據(jù)庫,分別為 DB-A , D
31、B-B。假設(shè)持久層木g架使用iBatis來實現(xiàn),那么SqlMapClient對象在創(chuàng)建時,對于兩個不同的DB連接要有兩個不同的 SqlMapClient 對象,假設(shè)我們有一個 Service類為MyService.java ,該類中有兩個 SqlMapClient 對象sqlMapA、sqlMapB 分別對應(yīng)著 DB-A、DB-B 。先看看我們的 SqlMapClient.java 類:(自定義 SqlMapClient 類,用來演示。)import java.util.Map;import mons.lang.builder.ToStringBuilder;import mons.lang.
32、builder.ToStringStyle;SuppressWarnings("unchecked")public class SqlMapClient 百 public SqlMapClient(String s, String t) sqlMap = s;type = t;卜部 public SqlMapClient。卜private String type = null ;private String sqlMap = null ;/ get、set方法略/用于演示查詢后返回一個String的返回結(jié)果public String selectForObject(Stri
33、ng sql, Map in) return this .toString();Override部 public String toString() return new ToStringBuilder( this , ToStringStyle.SHORT_PREFIX_STYLE).append("sqlMap", sqlMap).append("type", type).toString();卜MyService.java 類實現(xiàn):import java.util.Map;SuppressWarnings("unchecked"
34、)二 ± public class MyService I DataSource(type="B", sqlMap="com/annotation/sql-map-config-B.xml")I private SqlMapClient sqlMapB = null ;II DataSource(type="A", sqlMap="com/annotation/sql-map-config-A.xml")null ;I private SqlMapClient sqlMapA =/ get、set方法略I
35、 /模擬在DB-B數(shù)據(jù)庫取得數(shù)據(jù)部 public String selectForObjectFromB(String sql, Map in) return sqlMapB.selectForObject("", null );卜I/模擬在DB-A數(shù)據(jù)庫取得數(shù)據(jù)部 public String selectForObjectFromA(String sql, Map in) return sqlMapA.selectForObject("", null );卜接下來就是我們的注解類:DataSource.javaimport java.lang.anno
36、tation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;Target(ElementType.FIELD)Retention(RetentionPolicy.RUNTIME)public interface DataSource /* Dao 的類型* return*/String type() default "A" / 連接的數(shù)據(jù)庫類型 A or BIStr
37、ing sqlMap() default "" / Sql-Map-Config 文件的路徑, 用于加載 iBatis 的 SqlMapClient對象尸定義資源注入的接口 IFieldWiring.java 。之所以這里要定義這個接口,是為了以后擴(kuò)展用,我們很方便的定義更多的自定義注解。IFieldWiring.javaimport java.lang.annotation.Annotation;import java.lang.reflect.Field;public interface IFieldWiring Class<? extends Annotatio
38、n> annotationClass();void wiring(Object object, Field field);尸IFieldWiring.java 的實現(xiàn)類-DataSourceWiring.java 。(該類實現(xiàn)只為演示用,有很多 地方是可以改進(jìn)的)import java.lang.annotation.Annotation;import java.lang.reflect.Field;public class DataSourceWiring implements IFieldWiringOverride電電 public void wiring(Object objec
39、t, Field field) Object fieldObj = ReflectUtils.getFieldValue(object, field.getName();/ 獲彳導(dǎo) field對應(yīng)的對象甑 if (fieldObj != null ) return ;卜DataSource annotation = field.getAnnotation(DataSource.class );String type = annotation.type();String sqlMap = annotation.sqlMap();/這里可以用緩存來實現(xiàn),不用每次都去創(chuàng)建新的SqlMapClient
40、 對象SqlMapClient sqlMapImpl = new SqlMapClient(sqlMap, type);/將生成SqlMapClient 注入到bean對象的字段上ReflectUtils.setFieldValue(object, field.getName(), SqlMapClient.class , sqlMapIm pl);Override部 public Class<? extends Annotation> annotationClass() return DataSource. class;提供的:這里的ReflectUtils.java 也是我們自
41、定義的,并非有 Springimport java.lang.reflect.Field;import java.lang.reflect.Method;import mons.lang.StringUtils;public class ReflectUtils /* 取得字段值* param obj* param fieldName* return* /public static Object getFieldValue(Object obj, String fieldName) if (obj = null | fieldName = null | "".equals(
42、fieldName) return null ;卜Class<?> clazz = obj.getClass();韓 try String methodname = "get" + StringUtils.capitalize(fieldName);Method method = clazz.getDeclaredMethod(methodname);method.setAccessible( true );return method.invoke(obj);部 catch (Exception e) 百申 try Field field = clazz.get
43、DeclaredField(fieldName);field.setAccessible( true );return field.get(obj); catch (Exception e1) e1.printStackTrace();卜卜return null ;I卜public static void setFieldValue(Object target, String fname, Class<?> fieldClass,中申 Object fieldObj) if (!fieldClass.isAssignableFrom(fieldObj.getClass() retu
44、rn ;Class<?> clazz = target.getClass();try Method method = clazz.getDeclaredMethod("set" + Character.toUpperCase(fname.charAt(0)+ fname.substring(1), fieldClass);method.setAccessible(true );method.invoke(target, fieldObj);中申 catch (Exception e) try Field field = clazz.getDeclaredFiel
45、d(fname);field.setAccessible(true );field.set(target, fieldObj); catch (Exception e1) e1.printStackTrace();已經(jīng)基本大功告成了,只要將我們的DataSourceWiring.java 類使用起來即可。MyAnnotationBeanProcessor.java,這個類主要用于為 bean對象注入資源。import java.lang.reflect.Field;public class MyAnnotationBeanProcessor /*注入資源* param serviceObjec
46、t* param fieldAutoWirings /所有實現(xiàn)IFieldWiring的接口的對象,我們可以在此擴(kuò)* throws ExceptionfieldAutoWirings)*/public void wire(Object serviceObject, IFieldWiringthrows Exception Class<?> cls = serviceObject.getClass();for (Field field : cls.getDeclaredFields() for (IFieldWiring fieldAutoWiring : fieldAutoWiri
47、ngs) if (field.isAnnotationPresent(fieldAutoWiring.annotationClass() fieldAutoWiring.wiring(serviceObject, field);好了,開始我們的測試類:FieldWiringTest.javathrows Exception public class FieldWiringTest public static void main(String args)MyAnnotationBeanProcessor processor =new MyAnnotationBeanProcessor();MyS
48、ervice b = new MyService();processor.wire(b, new DataSourceWiring(); / 注入 DataSource 資源System.out.println(b.selectForObjectFromB("",null );System.out.println(b.selectForObjectFromA("",null );)執(zhí)行結(jié)果:SqlMapClientsqlMap=com/annotation/sql-map-config-B.xml,type=BSqlMapClientsqlMap=com
49、/annotation/sql-map-config-A.xml,type=A由執(zhí)行結(jié)果可以說明DataSource 資源已經(jīng)被我們正確的注入了。如果想擴(kuò)展的話,只需要新建一個類實現(xiàn)IFieldWiring 接口即可。假設(shè)叫InParamWiring.java ,實現(xiàn)了接口定義的兩個方法后,在使用的時候,只要用以下代碼便可將資源注入了:MyAnnotationBeanProcessor processor =new MyAnnotationBeanProcessor。;MyService b = new MyService();processor.wire(b, new DataSourceW
50、iring(), new InParamWiring(); / 注入 DataSource 、InParam 資源注:以上代碼重在演示,其實這個需求可以在Spring中管理兩個不同的SqlMapClient 對象,然后通過Spring的自動注入實現(xiàn)。下一篇將介紹怎么通過Spring實現(xiàn)這樣的自定義資源注入。出處 1、Entity(name="EntityName")必須,name為可選,對應(yīng)數(shù)據(jù)庫中一的個表2、 Table(name="",catalog="",schema="")可選,通常和Entity配合使用,
51、只能標(biāo)注在實體的 class定義處,表示實體對應(yīng)的數(shù)據(jù)庫表的信息 name:可選,表示表的名稱.默認(rèn)地,表名和實體名稱一致,只有在不一致的情況下才需要指定表名 catalog:可選,表示 Catalog 名稱,默認(rèn)為 Catalog("").schema:可選,表示Schema 名稱,默認(rèn)為 Schema("").3、id必須id定義了映射到數(shù)據(jù)庫表的主鍵的屬性,一個實體只能有一個屬性被映射為主鍵.置于getXxxx()前.4、GeneratedValue(strategy=GenerationType,generator="")可選
52、和TABLE 4種,分別表示讓strategy:表示主鍵生成策略 ,有 AUTO,INDENTITY,SEQUENCEORM框架自動選擇 根據(jù)數(shù)據(jù)庫的Identity字段生成根據(jù)數(shù)據(jù)庫表的 Sequence字段生成,以有根據(jù)一個額外的表生成主鍵,默認(rèn)為AUTOgenerator:表示主鍵生成器的名稱,這個屬性通常和 ORM框架相關(guān),例如,Hibernate 可以指定 uuid等主鍵生成方式.示例:IdGeneratedValues(strategy=StrategyType.SEQUENCE)public int getPk() return pk;5、Basic(fetch=FetchTyp
53、e,optional=true)可選Basic表示一個簡單的屬性到數(shù)據(jù)庫表的字段的映射,對于沒有任彳5標(biāo)注的getXxxx()方法,默認(rèn)即為Basicfetch:表示該屬性的讀取策略,有EAGER和LAZY兩種,分別表示主支抓取和延遲加載,默認(rèn)為EAGER.optional:表示該屬性是否允許為null,默認(rèn)為true示例:Basic(optional=false)public String getAddress() return address;6、Column可選Column 描述了數(shù)據(jù)庫表中該字段的詳細(xì)定義,這對于根據(jù)JPA注解生成數(shù)據(jù)庫表結(jié)構(gòu)的工具非常有作用.name:表示數(shù)據(jù)庫表中該
54、字段的名稱,默認(rèn)情形屬性名稱一致nullable:表示該字段是否允許為null,默認(rèn)為trueunique:表示該字段是否是唯一標(biāo)識,默認(rèn)為falselength:表示該字段的大小,僅又t String類型的字段有效insertable:表示在ORM框架執(zhí)行插入操作時,該字段是否應(yīng)出現(xiàn)INSETRT語句中,默認(rèn)為trueupdateable:表示在ORM框架執(zhí)行更新操作時,該字段是否應(yīng)該出現(xiàn)在UPDATE語句中,默認(rèn)為true.對于一經(jīng)創(chuàng)建就不可以更改的字段,該屬性非常有用,如對于birthday 字段.columnDefinition:表示該字段在數(shù)據(jù)庫中的實際類型.通常ORM框架可 以根據(jù)屬性類型自動判斷數(shù)據(jù)庫中字段的類型,但是又t于Date類型仍無法確定數(shù)據(jù)庫中字段類型究竟是DATE,TIME還是TIMESTAMP.此外,String的默認(rèn)映射類型為 VARCHAR,如果要將String類型映射到特定 數(shù)據(jù)庫的BLOB或TEXT字段類型,該屬性非常有用.示例:Column(name="BIRTH",nullable="false",columnDefinition="DATE")public String getBithday(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 天津市和平區(qū)五十五中重點名校2025屆中考生物考試模擬沖刺卷含解析
- 河北省泊頭四中學(xué)2025屆中考聯(lián)考生物試卷含解析
- 2025屆江西省新余一中學(xué)、二中學(xué)、三中學(xué)聯(lián)考中考聯(lián)考生物試卷含解析
- 梅州2025年廣東梅州平遠(yuǎn)縣教育系統(tǒng)進(jìn)校園招聘急需緊缺學(xué)科教師28人歷年參考題庫(頻考版)含答案解析
- 2024年欽州市中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 期末專項復(fù)習(xí)06 判斷說理題(原卷版)
- 機(jī)場停車位建設(shè)合同
- 地下雨水處理廠深基坑施工合同
- 自愿解除婚姻合同
- 設(shè)備租賃合同:建筑工具
- 2023-2024學(xué)年上海市靜安區(qū)繼續(xù)教育學(xué)校附屬學(xué)校八年級(上)期末物理試卷
- 人教版五年級上冊四則混合運算300道及答案
- 服裝企業(yè)員工手冊模板范文
- 《低空航空器起降點基礎(chǔ)設(shè)施配置技術(shù)要求》(征求意見稿)
- 2024中輕度游戲全球市場趨勢洞察
- 中國兒童注意缺陷多動障礙ADHD防治指南專家講座
- 部編人教版數(shù)學(xué)二年級下冊課前預(yù)習(xí)單
- 解除勞動合同經(jīng)濟(jì)補(bǔ)償協(xié)議書
- 2024年4月自考02799獸醫(yī)臨床醫(yī)學(xué)試題
- 市政工程勞動力計劃
- 印度尼西亞發(fā)展熱帶經(jīng)濟(jì)作物的氣候條件評價-以爪哇和蘇門答臘島為例
評論
0/150
提交評論