当前位置: 首页 > news >正文

MyBatis接口的方法上使用,定义对应的 SQL 操作

目录标题

  • 一、@Mapper:
  • 二、@Select、@Insert、@Update、@Delete:
  • 三、@Results、@Result:
  • 四、@Param:
  • 五、# 和 $:

MyBatis 是一款基于 Java 的持久层框架,它通过简化数据库操作来帮助开发者构建更好的数据库访问应用。

一、@Mapper:

  • 含义:用于标记一个 Mapper 接口。

用例:在 Mapper 接口上使用,告诉 MyBatis 这是一个映射器接口。

@Mapper
public interface UserMapper {User getUserById(Long id);List<User> getAllUsers();void insertUser(User user);
}

二、@Select、@Insert、@Update、@Delete:

  • 含义:分别表示 SELECT、INSERT、UPDATE、DELETE 操作。

用例:在 Mapper 接口的方法上使用,定义对应的 SQL 操作。

@Mapper
public interface UserMapper {@Select("SELECT * FROM users WHERE id = #{id}")User getUserById(Long id);@Insert("INSERT INTO users(name, age) VALUES(#{name}, #{age})")void insertUser(User user);@Update("UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}")void updateUser(User user);@Delete("DELETE FROM users WHERE id = #{id}")void deleteUser(Long id);
}

三、@Results、@Result:

  • 含义:用于定义结果映射规则。

用例:在 @Select 注解中使用,将查询结果映射为实体类。

@Select("SELECT * FROM users")
@Results({@Result(property = "id", column = "id"),@Result(property = "name", column = "name"),@Result(property = "age", column = "age")
})
List<User> getAllUsers();

四、@Param:

  • 含义:用于给方法参数取别名,提高可读性。

用例:在方法参数前使用,指定参数名称。

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

五、# 和 $:

  • 含义:# 表示预编译,$ 表示字符串拼接。

用例:在 SQL 语句中使用,# 将参数以预编译的形式传递,$ 将参数直接拼接到 SQL 语句中。

@Select("SELECT * FROM users WHERE id = #{id}") // # 表示预编译
User getUserById(@Param("id") Long id);@Select("SELECT * FROM users WHERE name = '${name}'") // $ 表示字符串拼接
User getUserByName(@Param("name") String name);

这些只是 MyBatis 中的一部分概念和功能,MyBatis 还提供了一些高级功能,如动态 SQL、缓存、拦截器等,以帮助开发者更灵活地操作数据库。

http://www.lryc.cn/news/275300.html

相关文章:

  • (20)Linux初始文件描述符
  • draw.io基础操作和代码高效画图进阶
  • 2024-01-04 用llama.cpp部署本地llama2-7b大模型
  • HTTP打怪升级之路
  • axure RP9.0安装字体图标库fontawesome
  • PiflowX组件-ReadFromUpsertKafka
  • keil 5 ARM CC编译错误和警告解释大全(3)序列号2000-3000
  • CentOS 7 实战指南:文件或目录的权限操作命令详解
  • 我的第一个前端项目,vue项目从零开始创建和运行
  • 【OJ】C++,Java,Python,Go,Rust
  • Flink 任务指标监控
  • Go语言程序设计-第7章--接口
  • 性能优化-OpenMP基础教程(二)
  • 让电脑变得更聪明——用python实现五子棋游戏
  • C#-接口
  • ASP.NET可视化流程设计器源码
  • 景联文科技GPT教育题库:AI教育大模型的强大数据引擎
  • PHP进阶-实现网站的QQ授权登录
  • 字节跳动基础架构SRE-Copilot获得2023 CCF国际AIOps挑战赛冠军
  • python moviepy 图文批量合成带字幕口播视频
  • 【代码片段】Linux C++打印当前函数调用堆栈
  • Linux程序、进程以及计划任务(第一部分)
  • Oracle database 12cRAC异地恢复至单机
  • 【docker】linux部署docker
  • 【K8S 云原生】Pod资源限制、Pod容器健康检查(探针)
  • Python从入门到网络爬虫(模块详解)
  • [大厂实践] 无停机迁移大规模关键流量(下)
  • VMware Workstation虚拟机CentOS 7.9 配置固定ip的步骤
  • 构建自己的私人GPT
  • EtherCAT主站SOEM -- 14 --Qt-Soem通过界面采集从站IO进行显示