标签:用法 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