【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);
相关推荐
阿酷tony4 分钟前
视频专栏列表的防录屏水印和跑马灯效果(也可网站调用)
java·前端·音视频
洋不写bug20 分钟前
排序(一)基础排序,插入|希尔|冒泡|直接选择排序详解
java·算法·排序算法·插入排序·冒泡排序·希尔排序·直接选择排序
xcl092522 分钟前
全民健身智慧管理系统实战指南:从架构设计到部署落地
java·spring boot
Bs_MoneyMagnet27 分钟前
基于springboot+vue的宠物殡葬管理平台的设计与实现 源码+文档
java·javascript·vue.js·spring boot·后端·宠物
ly768934 分钟前
生产环境 Spring Boot 应用内存泄漏排查实战
java·spring boot·spring·内存泄漏·threadlocal·gc日志·堆转储
IT小白杨1 小时前
eBay多账号如何应对关联判定:主体、收款、IP、环境四层配置清单一次讲清
java·网络·网络协议·tcp/ip·自动化·指纹浏览器
GIS好难学1 小时前
想转GIS开发,企业会卡专业背景吗?
学习·gis·gis开发·webgis
老猿讲编程2 小时前
【Eclipse OpenSOVD学习之十四】差距清单与演进建议
学习·rust·eclipse·车载·sovd
無a伟2 小时前
RabbitMq高级特性:TTL,死信队列,延迟队列
java·分布式·rabbitmq
长谷深风1112 小时前
Agent 跑了 30 分钟宕机,如何从断点继续?
java·大数据·人工智能·ai·大模型·memory·aiagent