MyBatis注解式开发

8 篇文章 0 订阅

注解的基础知识

MyBatis 的注解,主要是用于替换映射文件。而映射文件中无非存放着增、删、改、查的 SQL 映射标签。所以, MyBatis 注解,就是要替换映射文件中的 SQL 标签。

MyBatis 官方文档中指出,若要真正想发挥 MyBatis 功能,还是要用映射文件。即 MyBatis 官方并不建议通过注解方式来使用 MyBatis。

注解的基础语法

  1. 注解后是没有分号的。
  2. 注解首字母是大写的,因为注解与类、接口是同一级别的。一个注解,后台对应着。一个@interface 类。
  3. 在同一语法单元上,同一注解只能使用一次。
  4. 在注解与语法单元之间可以隔若干空行、注释等非代码内容。

注解的注解

{% asset_img ann01.jpg %}

打开@Deprecated 源码,看到其定义上还有三个注解: @Documented、 @Retention、 @Target。这三个注解的意义是:

  • @Target: 用于指定该注解可以标注的语法类型。 CONSTRUCTOR(构造器)、LOCAL_VARIABLE(局部变量)、 METHOD(方法)、 FIELD(属性)、 PACKAGE(包)、 PARAMETER(参数)、 TYPE(类型)。

注意:
对于 TYPE 常量,其意义有两个:一是指该注解可以用在类、接口、枚举等类上;二是指该注解可以作为其它注解的属性值,例如@Result、 @InterceptorRef。

  • @Documented: 用于指定该注解定义时的注释信息能否显示在 javaAPI 说明文档上。 没有添加的话,使用 javadoc 生成 API 文档时就不会该注解的信息添加到文档。
  • @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. 数组问题
    该属性在源码定义时被声明为数组,但在具体使用时却只要赋予一个值,此时无需将该值再定义为一个数组后赋给该属性。直接将该值赋给该属性即可。例如,对于声明为字符串数组 String[]的 value 属性,可以将字符串 String 直接赋给该 value。

  2. 默认值问题
    若某属性在注解定义时声明了其默认值,则在注解使用时,可以不为其指定属性值。注解会自动使用其默认值。

  3. value 属性问题
    若注解在使用时只需使用其 value 属性,其它属性要么有默认值,要么该注解只声明了一个 value 属性,此时,在注解使用时 value 属性名称可省略,而直接在注解的括号中写出该 value 属性的值。

在注解里面,对于数组,如果数组只有一个元素,{}可以省略不写;注解里面只用到一个属性,value可以省略不写

  1. 无属性问题
    有些注解在定义时,是没有属性的,如@Deprecated、 @Overide 都是没有属性声明的,那么在使用时只需给出注解名称即可。

MyBatis注解

@Insert

其 value 属性用于指定要执行的 insert 语句。

@SelectKey

用于替换 XML 中的<selectKey/>标签,用于返回新插入数据的 id 值

@SelectKey(statement="select @@identity", resultType=int.class, keyProperty="id", before=false)
  • statement:获取新插入记录主键值的 SQL 语句
  • keyProperty:获取的该主键值返回后初始化对象的哪个属性
  • resultType:返回值类型
  • before:指定主键的生成相对于 insert 语句的执行先后顺序,该属性不能省略

@Delete

其 value 属性用于指定要执行的 delete 语句。

@Update

其 value 属性用于指定要执行的 update 语句。

@Select

其 value 属性用于指定要执行的 select 语句。

总结

  1. 由于 MyBatis 注解替换的是映射文件,所以可以删除映射文件。
  2. 由于没有了映射文件,所以主配置文件中不能使用<mapper/>注册 mapper 的位置了。需要使用<package/>标签。
	<!-- 指定映射mapper -->
	<mappers>
		<package name="com.huang.dao"/>
	</mappers>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值