【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);
相关推荐
xieliyu.2 分钟前
Java手搓数据结构:从零模拟实现单向无头非循环链表
java·数据结构·学习·链表
0xDevNull4 分钟前
队列(Queue)实战教程:从原理到架构应用
java·开发语言·后端
y = xⁿ11 分钟前
MySQL学习日记:关于MVCC及一些八股总结
数据库·学习·mysql
再写一行代码就下班15 分钟前
word模版导出(占位符方式)
java·开发语言·word
懒得起名_yyf16 分钟前
AI智能体Skills全面入门指南
java
~无忧花开~16 分钟前
CSS全攻略:从基础到实战技巧
开发语言·前端·css·学习·css3
敖正炀16 分钟前
集合-List-ArrayList
java
BING_Algorithm20 分钟前
JDBC核心教程
java·后端·mysql
京师20万禁军教头21 分钟前
33面向对象(中级)-object类详解
java
一个小浪吴啊21 分钟前
重构 AI 编程流:基于 Hermes 记忆中枢与 OpenCode 执行终端的 Harness 工程化实践
java·人工智能·opencode·harness·hermes