MyBatis --- 常用注解

目录

前言

[1. @Mapper](#1. @Mapper)

[2. @Select](#2. @Select)

[3. @Insert](#3. @Insert)

[4. @Update](#4. @Update)

[5. @Delete](#5. @Delete)

[6. @Results](#6. @Results)

注意事项:


前言

MyBatis是一款强大的持久层框架,通过注解的方式,可以更便捷地进行数据库操作。本文将介绍MyBatis中常用的注解以及在使用这些注解时需要注意的事项。

1. @Mapper

在MyBatis中,使用 @Mapper注解可以将一个Java接口标识为MyBatis的映射器(Mapper),告诉MyBatis这个接口是用于执行SQL语句的。

java 复制代码
@Mapper
public interface UserMapper {
    
}

2. @Select

@Select注解用于配置查询操作的SQL语句,可以在接口方法上使用,也可以在接口内部定义常量。

java 复制代码
@Select("SELECT * FROM users WHERE id = #{id}")
User getUserById(@Param("id") Long id);

3. @Insert

@Insert注解用于配置插入操作的SQL语句。

java 复制代码
@Insert("INSERT INTO users (name, age) VALUES (#{name}, #{age})")
void insertUser(User user);

4. @Update

@Update注解用于配置更新操作的SQL语句。

java 复制代码
@Update("UPDATE users SET name = #{name} WHERE id = #{id}")
void updateUser(User user);

5. @Delete

@Delete注解用于配置删除操作的SQL语句。

java 复制代码
@Delete("DELETE FROM users WHERE id = #{id}")
void deleteUserById(@Param("id") Long id);

6. @Results

@Results注解用于配置结果映射,将数据库查询的结果映射到Java对象中。

java 复制代码
@Results({
    @Result(property = "id", column = "user_id"),
    @Result(property = "name", column = "user_name")
})
@Select("SELECT user_id, user_name FROM users WHERE id = #{id}")
User getUserById(@Param("id") Long id);

注意事项:

1. 命名参数与注解参数名一致: MyBatis通过参数名来匹配SQL语句中的占位符,确保注解中的参数名与SQL语句中的参数名一致。

2. 参数注解: 在方法参数上使用 @Param注解,用于指定SQL语句中的参数名。

java 复制代码
@Select("SELECT * FROM users WHERE name = #{name} AND age = #{age}")
User getUserByNameAndAge(@Param("name") String name, @Param("age") int age);

3. 动态SQL: MyBatis支持使用<if>, <choose>, <when>, <otherwise>等标签进行动态SQL的构建,可以根据不同条件动态拼接SQL语句。

**4. 使用#{}和{}的区别:** `#{}`会将参数值以占位符的形式传递给SQL,会进行预编译,防止SQL注入。`{}`则直接将参数值嵌入到SQL语句中,慎用避免SQL注入。

相关推荐
一嘴一个橘子37 分钟前
springmvc 全局异常处理【补充】
java
Wang's Blog1 小时前
Vibe Coding一人即团队系列35: 基于Claude Code的Spring Boot项目初始化实践
java·spring boot·后端
Dovis(誓平步青云)1 小时前
拍视频前先把镜头想清楚:做一个分镜取景辅助器
android·java·服务器·javascript·人工智能
AI人工智能+电脑小能手1 小时前
大白话说Java设计模式-45-解释器模式(源码剖析篇)
java·设计模式·解释器模式·源码分析·pattern·spel·javacc
吴声子夜歌1 小时前
Java——开发中通用的方法和准则(二)
java·开发语言·php
袁震2 小时前
HarmonyOS 应用包体积优化与上架自检实战:从 76.2MB 到 3.6MB
java·华为·性能优化·harmonyos
zcmodeltech2 小时前
反应装置模型控制系统设计与实现:多设备协同联动方案
java·网络·数据库·stm32·嵌入式硬件·能源·制造
码视野2 小时前
基于 Spring Boot + Vue3 的【城市地下燃气管网微泄漏感知与相邻地下空间燃爆预警中台】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端
2601_962071572 小时前
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
java·开发语言·数据库
梦想的旅途22 小时前
如何高效调用企业微信通讯录API管理组织架构
java·开发语言·企业微信