首页 > 数据库 >【Statement】Mybatis操作数据库核心

【Statement】Mybatis操作数据库核心

时间:2024-08-28 15:52:08浏览次数:12  
标签:标签 数据库 MyBatis Statement SQL Mybatis id

Statement

statement

在 MyBatis 中,Statement 是用于执行 SQL 语句的核心组件之一。它对应 JDBC 中的 java.sql.Statement、PreparedStatement 和 CallableStatement,用来执行 SQL 查询、更新、插入和删除操作。它封装了 JDBC 的三种 Statement 类型,使得开发者可以灵活地执行各种 SQL 操作。根据具体场景选择合适的 Statement 类型,可以提高应用的性能和安全性。

Statement 的类型

MyBatis 中的 Statement 有三种类型,分别对应不同的 SQL 操作方式:

  1. Statement:
  • 这是最基础的类型,适用于简单的 SQL 语句。
  • 它直接将 SQL 语句发送给数据库执行,不支持参数化查询(即无法使用 ? 占位符)。
  • 适用于不需要参数的简单查询。
  1. PreparedStatement:
  • 这是最常用的 Statement 类型。
  • 支持预编译和参数化查询,可以在 SQL 语句中使用 ? 作为占位符,并在执行前为这些占位符提供参数。
  • 因为 SQL 语句会被预编译,性能较高且更安全,可以防止 SQL 注入。
  1. CallableStatement:
  • 用于执行存储过程。
  • 允许调用数据库中预定义的存储过程,并处理输入和输出参数。

使用场景

  • Statement:适合一些简单、不带参数的 SQL 语句。
  • PreparedStatement:适用于绝大多数的 SQL 操作,特别是涉及到用户输入时,能够有效防止 SQL 注入。
  • CallableStatement:主要用于调用数据库中的存储过程。

在 MyBatis 中的配置

在 MyBatis 的 Mapper 文件中,通过 、、 或 等标签的 statementType 属性来指定使用哪种 Statement 类型。如果不指定,默认使用 PreparedStatement。

例如:

<select id="selectUser" resultType="User" statementType="PreparedStatement">
  SELECT * FROM users WHERE id = #{id}
</select>

在上面的例子中,MyBatis 将使用 PreparedStatement 来执行查询操作。

核心标签

在 MyBatis 中,Statement 相关的四大核心标签是 <select><insert><update><delete>,它们分别对应数据库的基本 CRUD(Create, Read, Update, Delete)操作。这四个标签用于在 MyBatis 的 Mapper 文件中定义 SQL 语句,并通过这些标签与数据库进行交互。

1. <select> 标签

  • 功能:用于执行查询操作。
  • 特点:返回单个或多个结果。支持复杂的查询条件和结果映射。
  • 示例
  <select id="selectUser" parameterType="int" resultType="User">
    SELECT * FROM users WHERE id = #{id}
  </select>
  • 说明id 属性指定了该 select 语句的唯一标识符,parameterType 指定了传入的参数类型,resultType 指定了返回的结果类型。

2. <insert> 标签

  • 功能:用于执行插入操作。
  • 特点:将数据插入到数据库中。支持自动生成主键并返回。
  • 示例
  <insert id="insertUser" parameterType="User">
    INSERT INTO users (name, age) VALUES (#{name}, #{age})
  </insert>
  • 说明parameterType 指定了传入参数的类型,这里假设 User 是一个包含 nameage 属性的对象。

3. <update> 标签

  • 功能:用于执行更新操作。
  • 特点:更新数据库中已存在的数据。
  • 示例
  <update id="updateUser" parameterType="User">
    UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}
  </update>
  • 说明parameterType 指定了传入参数的类型,通过传入 User 对象中的 id 来定位需要更新的记录。

4. <delete> 标签

  • 功能:用于执行删除操作。
  • 特点:从数据库中删除数据。
  • 示例
  <delete id="deleteUser" parameterType="int">
    DELETE FROM users WHERE id = #{id}
  </delete>
  • 说明parameterType 指定了传入参数的类型,这里通过 id 来删除用户。

总结

这四大标签是 MyBatis 中最基础、也是最常用的标签,它们各自对应数据库的 CRUD 操作,使用这些标签可以非常方便地进行数据库操作。开发者可以通过配置这些标签,实现对数据库的各种操作,而无需直接编写繁琐的 JDBC 代码。

标签:标签,数据库,MyBatis,Statement,SQL,Mybatis,id
From: https://blog.csdn.net/weixin_63405049/article/details/141642469

相关文章

  • 数据库-索引
    一、索引定义:索引是一种数据结构,用来约束一列值二、索引优点1、保证数据的唯一性2、实现表与表之间的参照性3、减少排序和分组的时间4、提高查询具体数据的速度三、索引缺点:1、索引占物理内存2、进行增删改查也到索引进行动态维护四、索引的分类1、普通索引(效果无不变......
  • openGauss-AI4DB-数据库自治运维
    openGauss-AI4DB:数据库自治运维数据库指标采集、预测与异常监控慢SQL根因分析索引推荐参数调优与诊断慢SQL发现详情查看:https://opengauss.org详情查看:https://docs-opengauss.osinfra.cn......
  • Java后端微服务架构下的数据库分库分表:Sharding-Sphere
    Java后端微服务架构下的数据库分库分表:Sharding-Sphere大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!随着微服务架构的广泛应用,数据库层面的扩展性问题逐渐凸显。Sharding-Sphere作为一个分布式数据库中间件,提供了数据库分库分表的能力,帮助开发者解......
  • 达梦数据库在Delphi10.3上的安装与连接
          ......
  • 数据库-视图
    一、什么是视图?视图是一个虚拟表,它是一个虚拟表,它不在数据库中以存储的形式保存(本身不包含数据),是在使用视图的时候动态生成。二、视图的优点?1、提高查询效率数据库中的数据查询非常复杂,可以简化sql语句2、安全有些保密字段,可以通过创建视图限制用户对某些字段进行操作3、简......
  • 使用idea快速创建springbootWeb项目(springboot+springWeb+mybatis-Plus)
    idea快速创建springbootWeb项目详细步骤如下1)创建项目2)选择springboot版本3)添加web依赖4)添加Thymeleaf5)添加lombok依赖然后点击create进入下一步双击pom.xml文件6)添加mybatis-plus依赖        这里使用的springboot版本比较新,mybatis-plus-boot-star......
  • 数据库服务器运维最佳实践
    数据库服务器运维最佳实践  数据库服务器运维的最佳实践涵盖了多个方面,包括硬件选择、系统配置、性能优化、安全管理、数据备份与恢复、高可用性和灾难恢复等。以下将详细阐述这些方面,并给出部分可执行的代码示例,但请注意,由于环境差异,某些代码可能需要调整才能直接运行。1.......
  • openGuass——表空间、数据库、Schema详解
    目录一、表空间二、数据库三、模式:Schema四、databaseschematable之间的关系五、表六、分区表七、索引八、视图九、序列十、同义词十一、约束一、表空间自带了两个表空间:pg_default和pg_global。查看命令:\db默认表空间pg_default:用来存储非共享系统表、用......
  • 数据库-单表结构-建表语句
    1.mysql-uroot-p[root@localhost~]#mysql-uroot-pEnterpassword:WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis6Serverversion:5.1.73SourcedistributionCopyright(c)2000,2013,Oracleand/oritsaffiliate......
  • 数据库基本操作 术语
    useradddcs1===》创建一个用户默认是在自己的组中useradddcs2-gdcs1===》创建一个dcs2用户并放在dcs1这个组当中groupsdcs2=====》查看dcs2在那个组中groupaddaaa====》创建一个叫做aaa的组cat/etc/group====>查看有哪些组gpasswd-adcs2aaa===》把dcs......