SG-UAP常用注解介紹


注解基本介紹

 Annotation(注解)是JDK5.0及以后版本引入的。它可以用於創建文檔,跟蹤代碼中的依賴性,甚至執行基本編譯時檢查。注解是以‘@注解名’在代碼中存在的,根據注解參數的個數,我們可以將注解分為:標記注解、單值注解、完整注解三類。它們都不會直接影響到程序的語義,只是作為注解(標識)存在,我們可以通過反射機制編程實現對這些元數據的訪問。另外,你可以在編譯時選擇代碼里的注解是否只存在於源代碼級,或者它也能在class文件中出現

 

注解定義

注解定義很簡單:

@Target(ElementType.PARAMETER)

public @interface Test {}

使用時以@Test方式標記在方法體,類或參數上。Target(ElementType.PARA

METER)可以定義注解的標記類型。

 

常用 SPRING注解

1.@Controller

       @Controller注解將一個類標明為用來接收HTTP請求控制器

2.@RequesMapping

       @RequestMapping注解將特定的URL和具體的控制器類或控制類類中的方法綁定

3.@PathVariable

       添加@PathVariable注解,可以直接在方法中使用請求URI中的值。

4.@Repository

         用於將數據訪問層(DAO層) 的類標識為Spring Bean。具體只需將該注解標注          

        在 DAO類上即可。同時,為了讓Spring能夠掃描類路徑中的類並識別出       

         @Repository注解,需要在XML配置文件中啟用Bean的自動掃描功能,這可    

         以通過<context:component-scan/><context:component-scanbase-

         package=”bookstore.dao”/>   如此,我們就不再需要在XML中顯式使用

        <bean/> 進行 Bean 的配置。Spring在容器初始化時將自動掃描base-package         

        指定的包及其子包下的所有class文件,所有標注了@Repository的類都將被冊       

         為 SpringBean。

控制層使用的注解介紹

1. @ColumnRequestParam

      作用:參數注解。

      com.sgcc.uap.rest.annotation.ColumnRequestParam

      請求體是{columns:["id","name"]}的形式,指明方法的參數是從請求體中獲取的字符串數組。

用於在獲取元數據信息時,從請求體獲取顯示的列,並將列名封裝為字符串數組。

      例如:請求參數為params={“columns”:[“id”,“name”,“sex”]},返回數據為:String[]{“id”,“name”,“sex”}    

使用示例:@RequestMapping("/meta")

    public @ColumnResponseBodyList<ViewAttributeData>getMetaData(

        @ColumnRequestParam("params")String[] columns) {

             …………

        }

2. @ColumnResponseBody

      作用:方法體注解,對返回值進行攔截。

      攔截List類型的返回值,將返回值解析為JSON格式字符串,如:

      {“columns”:[{“name”:”id”,”caption”:”編號”,”length”:32},{},{},…]}

      com.sgcc.uap.rest.annotation.ColumnResponseBody

      響應體是{columns:[{},{},{}……]}的形式,指明將方法返回值轉化為JSON格式列信息,

      將返回的對象轉換為json串。

      返回對象為ViewAttributeData,

      返回數據格式為:  

     {"columns":[{"name":"id","caption":"ID",nullable:false,dataType:"string"},...]}

3. @IdRequestBody:

      作用:參數注解。

      攔截請求體為{params:{primaryKey: ”EMP_ID” ,  ids:[”001”, “002”,……] }}格式的數據,將此數據轉換為字符串數組。如                    

                 [“0001”,”0002”]。

      com.sgcc.uap.rest.annotation.IdRequestBody

      指明方法的參數是從請求體中獲取的字符串數組 ,並將主鍵信息封裝為IDRequestObject對象。通過getPrimarykey()和getIds()取出主鍵名稱和主鍵值

      例如:用於刪除操作從請求體中獲取主鍵

     public @VoidResponseBody

  Object delete(@IdRequestBodyIDRequestObjectid) {

                。。。。。。

      }

4. @ItemRequestParam:

        作用:參數注解。

        com.sgcc.uap.rest.annotation.ItemRequestParam 

        攔截請求數據{“itemType”:”school”},將數據的itemType解析,返回字符串。例如返回:school。

        該注解用於在樹場景中取出節點的itemType。使用示例:

       public @TreeResponseBody

  List<TreeNode>getNodes(@PathVariableString id,

  @ItemRequestParam("params")StringitemType){

                。。。。。。

         }

5. @ItemsRequestBody:

        作用:參數注解。

        com.sgcc.uap.rest.annotation.ItemsRequestBody

        攔截請求體的數據格式:

       {“items”:[{“id”:”01”,”name”:”n1”},{},{},…]}和{“parentID”:”0003329281”,“items”:[{“id”:”01”,”name”:”n1”},{},{},…]}

        將數據轉化為List<Map>格式,list中map封裝一個item數據

        使用示例:用於保存場景,將請求體中的記錄封裝為到list中。

       public @ItemResponseBody

  List<SchoolVO>saveSchool(@ItemsRequestBodyList<Map>list) {

  。。。。

        }

6. @ItemsResponseBody:

       作用:方法體注解。

       攔截返回數據。將返回的list集合轉化為json字符串。

                {“items”:[{“id”:”01”,”name”:”n1”},{},{},…] ,itemCount:100}

       com.sgcc.uap.rest.annotation.ItemResponseBody

       攔截返回數據。將返回的list集合轉化為json字符串。指明返回值將以 

       {items:[{}{}{}{}]}的形式返回。使用示例:

      public @ItemResponseBody

  QueryResultObjectquery(@QueryRequestParam("params")     

       RequestConditionparams){

        。。。。。

       }

7. @QueryRequestParam:

        作用:參數注解。

        com.sgcc.uap.rest.annotation.QueryRequestParam

        GET請求中從url中通過指定KEY值將參數取出,用於查詢條件。    

        QueryRequestParam("params"),將url中的{"params":{"filter":"name  ='eqe'&sex='female'","orderStr":"age","columns":"id,name,age,sex"}}轉換為RequestCondition對象。使用實例:

        public @ItemResponseBody

  QueryResultObjectquery(@QueryRequestParam("params")RequestCondition     

        params){

                。。。。。

        } 

8. @QueryRequestParam:

        作用:參數注解。

        com.sgcc.uap.rest.annotation.QueryRequestParam

        GET請求中從url中通過指定KEY值將參數取出,用於查詢條件。    

        QueryRequestParam("params"),將url中的{"params":{"filter":"name  ='eqe'&sex='female'","orderStr":"age","columns":"id,name,age,sex"}}轉換為RequestCondition對象。使用實例:

        public @ItemResponseBody

  QueryResultObjectquery(@QueryRequestParam("params")RequestCondition     

        params){

                。。。。。

        } 

9. @RawResponseBody:

      作用:方法體注解。

      攔截返回值,對於字符串類型的返回值可以原樣輸出。

      對於List或對象類型的返回值轉換為響應的json字符串輸出。方便用戶封裝自定義的格式。

      com.sgcc.uap.rest.annotation.RawResponseBody

      指明方法的返回值應當以原生返回值的形式,綁定到響應體中 ,使用該注解的方法應當返回object。

      使用示例:將方法中返回的字符串原樣輸出,用於自己拼裝返回的格式,不用平台的json轉換。

     public @RawResponseBodyObject test(){

  return"welcome!";

      }

      示例中的方法將字符串”welcome!”原樣返回。

11. @VoidResponseBody:

       作用:將空返回值包裝為通用的返回格式。

       com.sgcc.uap.rest.annotation.VoidResponseBody

       用於沒有特定返回值得方法注解,將對象轉換為統一的json串。如:

       {

   "successful":true,    ————方法是否調用成功

    "resultHint":"",     ————異常信息

    "resultValue": “”   ————數據信息是空的

       }

       例如:刪除操作

      public @VoidResponseBody

       Object delete(@IdRequestBodyIDRequestObjectid) {

                       。。。。

       }

Hibernate實體映射注解支持

平台已經引入了hibernate的注解功能,具體用法與hibernate注解映射相同,

詳細用法可參考Hibernate注解映射相關文檔。

@Entity

@Table(name= "O_ORG")

publicclass ORG implementsjava.io.Serializable{

    @Id

    @GenericGenerator(name="ORG_ID",strategy="uuid")

    @GeneratedValue(generator="ORG_ID")

    @Column(name="ORG_ID")

    public String getId() {

        return this.id;

    }

   

    public void setId(Stringid) {

        this.id = id;

    }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM