日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SSM框架之MyBatis3专题5:MyBatis注解式开发

發布時間:2025/3/19 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSM框架之MyBatis3专题5:MyBatis注解式开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 注解的基本知識

  • 以下注解知識的講解,均使用@Override、@Deprecated(過時)、@SuppressWarnings舉例。

    1.1 注解的基本語法

  • 注解后是沒有分號的;
  • 注解首字母是大寫的,因為注解與類、接口是同一級別的。一個注解,后臺對應著一個@interface類;
  • 在同一語法單元上,同一注解只能夠使用一次;
  • 在注解與語法單元之間可以隔若干空行、注釋等非代碼內容。

    1.2 注解的注解


  • 打開@Deprecated源碼,看到其定義上還有三個注解:@Documented、@Retention、@Target。這三個注解的意義是:

1、@Target:用于指定該注解可以標注的語法類型。CONSTRUCTOR(構造器)、LOCAL_VARIABLE(局部變量)、METHOD(方法)、FIELD(屬性)、PACKAGE(包)、PARAMETER(參數)、TYPE(類型)。

  • 注意,對于TYPE常量,其意義有兩個:一是指該注解可以用在類、接口、枚舉等類上;二是指該注解可以作為其他注解的屬性值。例如,后面要學到的@Result、@InterceptorRef就是屬性的第二個用意。

2、@Documented:用于指定該注解定義時的注釋信息能否顯示在javaAPI說明文檔中。沒有添加的話,使用javaDoc生成API文檔時就不會將該注解的信息添加到文檔中。


3、@RetentionPolicy:這是一個enum類型,共有三個值:SOURCE,CLASS和RUNTIME。

  • SOURCE:代表這個Annotation類型的信息只會保留在程序源碼中,源碼如果經過了編譯之后,Annotation的數據就會消失,并不會保留在編譯好的.class文件中。
  • CLASS:代表這個Annotation類型的信息除了保留在程序源碼中,同時也會保留在編譯好的.class文件中。但是在執行時,并不會把這一些信息加載到虛擬機(JVM)中去。這是Retention的默認值。
  • RUNTIME:表示在源碼、編譯好的.class文件中保留信息,同時在執行時還會把這些信息加載到JVM中去。
  • 舉例:@Override中的Retention值為SOURCE,編譯成功了就不要這一些檢查的信息。相反@Deprecated中的Retention的值為RUNTIME,表示除了在編譯時會警告我們使用哪個被Deprecated的方法,在執行的時候也可以查出該方法是否被Deprecated。

    1.3 注解的屬性

  • 當某個變量被聲明了,但是卻未被使用;或者某集合在聲明或者定義時未加泛型說明等情況發生時,會在代碼下給出警告黃線。Ctrl + 1,可在代碼上添加一個注解@SuppressWarnings()。并且發現,不同的情況下,其參數是不同的。
  • 打開其源碼,看到其定義與@Deprecated是不同的,其接口中聲明了一個方法String[] value()。那么該注解在使用時必須包含一個屬性value,類型為String[]。且該參數沒有默認值,即必須給出value的值。
  • 對于注解的屬性,需要注意以下幾個問題:

    1.3.1 數組問題

  • 該屬性在源碼定義時被聲明為數組,但是在具體使用時卻只能夠賦予一個值,此時無需將該值再定義為一個數組后賦給該屬性。直接將該值賦給該屬性即可。例如,對于聲明為字符串數組String[]的value屬性,可以將字符串String直接賦給該value。

    1.3.2 默認值問題

  • 若某屬性在注解定義時聲明了其默認值,則在注解使用時,可以不為其指定屬性值。注解會自動使用其默認值。

    1.3.3 value屬性問題

  • 若注解在使用時只需使用其value屬性,其他屬性要么有默認值,要么該注解只聲明了一個value屬性,此時,在注解使用時value屬性名稱可省略,而直接在注解的括號中寫出該value屬性的值。

    1.3.4 無屬性問題

  • 有些注解在定義時,是沒有屬性的,如@Deprecated、@Override都是沒有屬性聲明的,那么在使用時只需要給出注解名稱即可。

    2 MyBatis注解

    2.1 @Insert

  • 其value屬性用于指定喲啊執行的insert語句;

    2.2 @SelectKey

  • 用于替換XML中的<selectKey/>標簽,用于返回新插入數據的id值。
  • statement:獲取新插入記錄主鍵值的SQL語句;
  • keyProperty:獲取的該主鍵值返回后初始化對象的哪個屬性;
  • resultType:返回值類型;
  • before:指定主鍵的生成相對于insert語句的執行先后順序,該屬性不能夠省略;

    2.3 @Delete

  • 其value屬性用于指定要執行的delete語句。

    2.4 @Update

  • 其value屬性用于指定要執行的update語句。

    2.5 @Select

  • 其value屬性用于指定要執行的select語句。

    3 程序舉例說明

    3.1 修改Dao接口

  • 在Dao接口的每個抽象方法上添加注解。

    public interface IStudentDao { @Insert(value={"insert into t_student(name,age,score) values(#{name}, #{age}, #{score})"}) void insertStudent(Student student);@Insert("insert into t_student(name,age,score) values(#{name}, #{age}, #{score})") @SelectKey(statement="select @@identity", resultType=int.class, keyProperty="id", before=false) void insertStudentCacheId(Student student);@Delete(value="delete from t_student where id=#{xxx}") void deleteStudentById(int id);@Update("update t_student set name=#{name}, age=#{age}, score=#{score} where id=#{id}") void updateStudent(Student student);@Select("select id,name,age,score from t_student") List<Student> selectAllStudents();@Select("select id,name,age,score from t_student where id=#{jjj}") Student selectStudentById(int id);@Select("select id,name,age,score from t_student where name like '%' #{xxx} '%'") List<Student> selectStudentsByName(String name); }

    3.2 刪除映射文件

  • 由于MyBatis注解替換的是映射文件,所以這里就不需要映射文件了,將其直接刪除。

    3.3 修改主配置文件

  • 由于沒有映射文件,所以主配置文件中不能夠使用<mapper/>注冊mapper的位置,需要使用<package/>標簽。 <!-- 注冊映射文件 --> <mappers><package name="com.eason.mybatis.dao"/> </mappers>

轉載于:https://blog.51cto.com/12402717/2095563

總結

以上是生活随笔為你收集整理的SSM框架之MyBatis3专题5:MyBatis注解式开发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 狠狠影院 | 国产精品美女主播 | 成人在线观看黄色 | 黄色污在线观看 | www.日韩在线观看 | 成人免费观看网站 | 亚洲日b视频 | 亚洲欧美在线一区二区 | 国产欧美一区二区三区白浆喷水 | 中文字幕日韩精品亚洲一区小树林 | 97人人草| 国产日韩视频一区 | 欧美巨大另类极品videosbest | 欧美一级录像 | 国产精品sm调教免费专区 | 日韩伦乱| 久久综合久久久 | 黑人黄色录像 | 久久精品男人 | 欧美性生交xxxxx久久久缅北 | 天天摸天天插 | 亚洲色图另类小说 | 肉色超薄丝袜脚交一区二区图片 | 一区二区一级片 | 天天干影院| 日韩国产毛片 | 日韩精品在线免费 | 五月天久久婷婷 | www.精品| 国产免费观看久久黄av片 | 美女张开腿让男人桶爽 | 国产成人91| 黄色片久久久久 | 免费大片黄在线观看视频网站 | 色呦呦在线播放 | 天天插夜夜爽 | 尤物视频在线观看国产性感 | 久操视频在线播放 | 在线成人国产 | 午夜影院福利社 | 五月婷婷六月天 | av网站大全在线观看 | 精品午夜福利在线观看 | 中文字字幕码一二三区 | 日本一区二区免费电影 | 一区二区三区在线看 | 欧美一级片免费在线观看 | 不用播放器的av网站 | 天天干天 | 理想之城连续剧40集免费播放 | 肉肉h| av男女 | 米奇色| 欧美三级在线观看视频 | 国产亚洲制服欧洲高清一区 | 国产精品久久久久久久免费大片 | 国产最新地址 | 在线不卡中文字幕 | 精品中文字幕在线观看 | 狠狠狠狠狠 | 亚洲嫩草影院 | 五月婷婷国产 | 精品视频 | 国产午夜手机精彩视频 | 老女人毛片 | 香蕉色网| 东京干手机福利视频 | 国产黄色片在线观看 | 放荡闺蜜高h季红豆h | 91黄色免费视频 | 免费大片黄在线观看 | 中文字幕有码在线视频 | 人人干免费 | 理论在线视频 | 欧美不卡视频在线观看 | 欧美jizz欧美性大全 | 一边摸一边做爽的视频17国产 | 国产伦理在线 | 国产欧美一区二区三区免费看 | 激情视频免费观看 | 国产毛片91 | www.亚洲视频| 久久久久无码国产精品不卡 | 免费在线成人av | 69视频国产 | 天天做天天摸天天爽天天爱 | 网站免费黄色 | 日韩 欧美 亚洲 国产 | 国产精品视频一区二区三区 | 精品国产鲁一鲁一区二区三区 | 日日夜夜免费精品 | 视频成人免费 | 黄色片18 | 色妞干网 | 欧美激情一区二区三区p站 欧美mv日韩mv国产网站app | 亚洲一区欧洲一区 | 无毒黄色网址 | 午夜精品一区二区在线观看 | 亚洲の无码国产の无码步美 |