标签:用法 public 选项 article 超时 基本用法 api ima nat
本文,我们来分享 MyBatis 的注解模块,对应 annotations 包。如下图所示:
在 《精尽 MyBatis 源码解析 —— 项目结构一览》 中,简单介绍了这个模块如下:
随着 Java 注解的慢慢流行,MyBatis 提供了注解的方式,使得我们方便的在 Mapper 接口上编写简单的数据库 SQL 操作代码,而无需像之前一样,必须编写 SQL 在 XML 格式的 Mapper 文件中。虽然说,实际场景下,大家还是喜欢在 XML 格式的 Mapper 文件中编写响应的 SQL 操作。
注解比较多,艿艿尽量对它们的用途,进行规整。
另外,想要看 MyBatis 注解文档的胖友,可以看看 《MyBatis 文档 —— Java API》 。
艿艿的补充:在写完本文后,发现田守枝对注解的整理更好,引用如下:
FROM 《mybatis 注解配置详解》
- 增删改查: @Insert、@Update、@Delete、@Select、@MapKey、@Options、@SelelctKey、@Param、@InsertProvider、@UpdateProvider、@DeleteProvider、@SelectProvider
- 结果集映射: @Results、@Result、@ResultMap、@ResultType、@ConstructorArgs、@Arg、@One、@Many、@TypeDiscriminator、@Case
- 缓存: @CacheNamespace、@Property、@CacheNamespaceRef、@Flush
示例如下:
| package com.whut.inter; | 
org.apache.ibatis.annotations.@Select ,查询语句注解。代码如下:
| // Select.java | 
org.apache.ibatis.annotations.@Insert ,插入语句注解。代码如下:
| // Insert.java | 
org.apache.ibatis.annotations.@Update ,更新语句注解。代码如下:
| // Update.java | 
org.apache.ibatis.annotations.@Delete ,删除语句注解。代码如下:
| // Delete.java | 
org.apache.ibatis.annotations.@Param ,方法参数名的注解。代码如下:
当映射器方法需多个参数,这个注解可以被应用于映射器方法参数来给每个参数一个名字。否则,多参数将会以它们的顺序位置来被命名。比如
#{1},#{2}等,这是默认的。使用
@Param("person"),SQL 中参数应该被命名为#{person}。
| // Param.java | 
示例如下:
IBlogDAO 接口:
| package com.whut.inter; | 
BlogSqlProvider 类:
| package com.whut.sqlTool; | 
org.apache.ibatis.jdbc.SqlBuilder 来实现 SQL 的拼接与生成。实际上,目前该类已经废弃,推荐使用个的是 org.apache.ibatis.jdbc.SQL 类。org.apache.ibatis.jdbc.SQLTest 单元测试类。Mapper XML 配置:
| <?xml version="1.0" encoding="UTF-8"?> | 
org.apache.ibatis.annotations.@SelectProvider ,查询语句提供器。代码如下:
| // SelectProvider.java | 
type )的指定方法( method ),返回使用的 SQL 。并且,该方法可以使用 Map<String,Object> params 来作为方法参数,传递参数。org.apache.ibatis.annotations.@InsertProvider ,插入语句提供器。代码如下:
| // InsertProvider.java | 
org.apache.ibatis.annotations.@UpdateProvider ,更新语句提供器。代码如下:
| // UpdateProvider.java | 
org.apache.ibatis.annotations.@DeleteProvider ,删除语句提供器。代码如下:
| // DeleteProvider.java | 
org.apache.ibatis.annotations.@Results ,结果的注解。代码如下:
对应 XML 标签为
<resultMap />
| // Results.java | 
org.apache.ibatis.annotations.@Results ,结果字段的注解。代码如下:
| // Result.java | 
org.apache.ibatis.annotations.@One ,复杂类型的单独属性值的注解。代码如下:
|  | 
org.apache.ibatis.annotations.@Many ,复杂类型的集合属性值的注解。代码如下:
| // Many.java | 
org.apache.ibatis.annotations.@ResultMap ,使用的结果集的注解。代码如下:
| // ResultMap.java | 
#getBlogByTitle(@Param("title")String title) 方法,使用的注解为 @ResultMap(value = "sqlBlogsMap"),而 "sqlBlogsMap" 中 Mapper XML 中有相关的定义。org.apache.ibatis.annotations.@ResultType ,结果类型。代码如下:
| // ResultType.java | 
org.apache.ibatis.annotations.@CacheNamespace ,缓存空间配置的注解。代码如下:
对应 XML 标签为
<cache />
|  | 
org.apache.ibatis.annotations.@Property ,属性的注解。代码如下:
| // Property.java | 
org.apache.ibatis.annotations.@CacheNamespaceRef ,指向指定命名空间的注解。代码如下:
对应 XML 标签为
<cache-ref />
| // CacheNamespaceRef.java | 
org.apache.ibatis.annotations.@Options ,操作可选项。代码如下:
| // Options.java | 
useGeneratedKeys + keyProperty + keyColumn 属性,可实现返回自增 ID 。示例见 《【MyBatis】 MyBatis修炼之八 MyBatis 注解方式的基本用法》的 「返回自增主键」 小节 。org.apache.ibatis.annotations.@SelectKey ,通过 SQL 语句获得主键的注解。代码如下:
| // SelectKey.java | 
org.apache.ibatis.annotations.@MapKey ,Map 结果的键的注解。代码如下:
| // MapKey.java | 
org.apache.ibatis.annotations.@Flush ,Flush 注解。代码如下:
如果使用了这个注解,定义在 Mapper 接口中的方法能够调用
SqlSession#flushStatements()方法。(Mybatis 3.3及以上)
| // Flush.java | 
org.apache.ibatis.annotations.Mapper ,标记这是个 Mapper 的注解。代码如下:
| // Mapper.java | 
org.apache.ibatis.annotations.@Lang ,语言驱动的注解。代码如下:
| // Lang.java | 
如下几个注解,暂时省略,使用较少。
@TypeDiscriminator + @Case@ConstructorArgs + @Arg@AutomapConstructor标签:用法 public 选项 article 超时 基本用法 api ima nat
原文地址:https://www.cnblogs.com/siye1989/p/11621712.html