【2023.11.26】Mybatis注解学习

注解执行SQL语句

Mybatis的映射接口需要写在映射器xml的命名空间内。为了省略这一步,可以使用注解开发。

java 复制代码
    @Select("select * from artist where aID = #{a}")
    artist getArtistById(int a);

在接口的方法上加上注解@,注解中写明SQL语句即可省略映射器的SQL语句书写,不用写分号。

(注:此处若无法识别数据库的表,需要右键选择架构)

同时修改配置xml文件中的mapper标签:

XML 复制代码
<mapper class = "com.test.mapper.TestMapperInterface"/>
<!--    也可以直接注册整个包下的 <package name="com.test.mapper"/>   -->

resource: 映射器直接改为class: 接口,若多个接口都在同一个包下,也可以使用**package:**包名


注解自定义映射规则

使用SqlSession中的方法或映射器中的SQL语句都只能完成简单的Sql操作。复杂的操作需要我们自定义映射规则**@Results**注解来解决。

java 复制代码
@Results({
        @Result(id = true, column = "sid", property = "sid"),
        @Result(column = "sex", property = "name"),
        @Result(column = "name", property = "sex")
})
@Select("select * from student")

@ConstructorArgs({
        @Arg(column = "sid", javaType = int.class),
        @Arg(column = "name", javaType = String.class)
})
@Select("select * from student where sid = #{sid} and sex = #{sex}")

相比于映射器里书写的自定义映射规则,不需要写resultMap的id与type

如果要使用映射器中定义的映射规则,可以使用**@ResultMap**(id)注解,填写映射规则id即可。

如果要用接口写多个构造方法,可以使用**@ConstructorArgs**注解。

若方法中含有多个形参,需要用**@Param**注解将参数名强调一遍,否则会报错。

java 复制代码
@Select("select * from artist where aID = #{a} and asex = #{b}")
artist getArtistById(@Param("a")int a, @Param("b")int b);
相关推荐
毕设源码-赖学姐4 分钟前
【开题答辩全过程】以 花卉交易系统为例,包含答辩的问题和答案
java
arvin_xiaoting9 分钟前
从 0 到 1:搭建自学习 AI Agent 系统的完整工程指南
人工智能·学习·系统设计·ai agent·lancedb·自学习·openclaw
weixin_7042660516 分钟前
Spring整合MyBatis(一)
java·spring·mybatis
翘着二郎腿的程序猿16 分钟前
Maven本地化部署与使用全指南
java·maven
历程里程碑18 分钟前
Linux 49 HTTP请求与响应实战解析 带http模拟实现源码--万字长文解析
java·开发语言·网络·c++·网络协议·http·排序算法
飞Link20 分钟前
深度解析 TS2Vec:时序表示学习中的层次化建模(Hierarchical Contrastive Learning)
开发语言·python·学习·数据挖掘
IronMurphy21 分钟前
【算法二十】 114. 寻找两个正序数组的中位数 153. 寻找旋转排序数组中的最小值
java·算法·leetcode
代码探秘者23 分钟前
【Java集合】ArrayList :底层原理、数组互转与扩容计算
java·开发语言·jvm·数据库·后端·python·算法
寻见90324 分钟前
10 分钟吃透 MyBatis 核心|从底层原理到实战技巧,Java 开发者必藏(无废话干货)
java·mysql·mybatis
隔壁小邓25 分钟前
分布式事务
java·后端