详解MyBatis增删改查SQL案例实战

 更新时间:2026年03月20日 09:14:38   作者:一个差不多的先生  
本文通过具体的SQL案例,详细介绍了MyBatis的增删改查操作,通过灵活的Mapper接口和XML配置,MyBatis能够实现高效的数据操作,同时支持动态SQL和批量操作,极大地提升了开发效率,感兴趣的可以了解一下

在Java开发中,MyBatis是一款非常流行的持久层框架,它通过灵活的SQL操作和强大的映射功能,极大地简化了数据库开发。本文将通过具体的SQL案例,详细讲解MyBatis的增删改查(CRUD)操作。

一、环境准备

假设我们有一个User表,表结构如下:

字段名数据类型描述
idINT主键
usernameVARCHAR用户名
passwordVARCHAR密码
emailVARCHAR邮箱

对应的实体类User如下:

public class User {
    private Integer id;
    private String username;
    private String password;
    private String email;

    // Getter和Setter方法
}

二、增删改查操作

1. 插入操作(Insert)

Mapper接口方法

int insertUser(User user);

Mapper XML配置

<insert id="insertUser" parameterType="User">
    INSERT INTO user (username, password, email)
    VALUES (#{username}, #{password}, #{email})
</insert>

调用示例

User user = new User();
user.setUsername("testUser");
user.setPassword("123456");
user.setEmail("test@example.com");

int result = userMapper.insertUser(user);
System.out.println("插入结果:" + result); // 影响的行数

2. 查询操作(Select)

Mapper接口方法

User getUserById(Integer id);

Mapper XML配置

<select id="getUserById" parameterType="int" resultType="User">
    SELECT * FROM user WHERE id = #{id}
</select>

调用示例

User user = userMapper.getUserById(1);
System.out.println("查询结果:" + user.getUsername());

3. 更新操作(Update)

Mapper接口方法

int updateUser(User user);

Mapper XML配置

<update id="updateUser" parameterType="User">
    UPDATE user
    SET username = #{username},
        password = #{password},
        email = #{email}
    WHERE id = #{id}
</update>

调用示例

User user = new User();
user.setId(1);
user.setUsername("updatedUser");
user.setPassword("newPassword");
user.setEmail("updated@example.com");

int result = userMapper.updateUser(user);
System.out.println("更新结果:" + result); // 影响的行数

4. 删除操作(Delete)

Mapper接口方法

int deleteUserById(Integer id);

Mapper XML配置

<delete id="deleteUserById" parameterType="int">
    DELETE FROM user WHERE id = #{id}
</delete>

调用示例

int result = userMapper.deleteUserById(1);
System.out.println("删除结果:" + result); // 影响的行数

三、动态SQL与批量操作

1. 动态SQL

MyBatis支持动态SQL,可以根据条件动态拼接SQL语句。例如,实现一个模糊查询:

Mapper接口方法

List<User> searchUsers(@Param("keyword") String keyword);

Mapper XML配置

<select id="searchUsers" resultType="User">
    SELECT * FROM user
    WHERE username LIKE CONCAT('%', #{keyword}, '%')
</select>

调用示例

List<User> users = userMapper.searchUsers("test");
users.forEach(user -> System.out.println(user.getUsername()));

2. 批量操作

MyBatis也支持批量操作,例如批量插入:

Mapper接口方法

int insertBatch(List<User> users);

Mapper XML配置

<insert id="insertBatch" parameterType="list">
    INSERT INTO user (username, password, email)
    VALUES
    <foreach collection="list" item="user" separator=",">
        (#{user.username}, #{user.password}, #{user.email})
    </foreach>
</insert>

调用示例

List<User> users = new ArrayList<>();
users.add(new User("user1", "123", "user1@example.com"));
users.add(new User("user2", "456", "user2@example.com"));

int result = userMapper.insertBatch(users);
System.out.println("批量插入结果:" + result);

四、总结

本文通过具体的SQL案例,详细介绍了MyBatis的增删改查操作。通过灵活的Mapper接口和XML配置,MyBatis能够实现高效的数据操作,同时支持动态SQL和批量操作,极大地提升了开发效率。希望本文能帮助你更好地掌握MyBatis的核心功能,提升开发能力。

到此这篇关于详解MyBatis增删改查SQL案例实战的文章就介绍到这了,更多相关MyBatis增删改查SQL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中缀表达式转后缀表达式流程详解

    Java中缀表达式转后缀表达式流程详解

    中缀表达式是一个通用的算术或逻辑公式表示方法。,中缀表达式不容易被计算机解析,但仍被许多程序语言使用,因为它符合人们的普遍用法。本文介绍了实现中缀表达式的方法,需要的可以参考一下
    2022-09-09
  • Java实现把两个数组合并为一个的方法总结

    Java实现把两个数组合并为一个的方法总结

    这篇文章主要介绍了Java实现把两个数组合并为一个的方法,结合实例形式总结分析了java常用的四种数组合并操作技巧,需要的朋友可以参考下
    2017-12-12
  • SpringBoot整合JPA方法及配置解析

    SpringBoot整合JPA方法及配置解析

    这篇文章主要介绍了SpringBoot整合JPA方法及配置过程,JPA是Java Persistence API的简称,中文名Java持久层API,感兴趣想要详细了解可以参考下文
    2023-05-05
  • Spring Boot与Docker部署详解

    Spring Boot与Docker部署详解

    本篇文章主要介绍了Spring Boot与Docker部署详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Java SpringBoot整合Canal实现数据同步方式

    Java SpringBoot整合Canal实现数据同步方式

    本文介绍了如何开启和配置Canal,以及如何在Spring Boot中集成Canal,Canal是一种基于MySQL的数据库变更解析工具,可以将数据库的变更事件发送到Kafka、RocketMQ等消息队列中,用于数据分析和挖掘
    2025-02-02
  • spring+springmvc+mybatis+maven入门实战(超详细教程)

    spring+springmvc+mybatis+maven入门实战(超详细教程)

    这篇文章主要介绍了spring+springmvc+mybatis+maven入门实战(超详细教程),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • SpringBoot使用@Value实现给静态变量注入值

    SpringBoot使用@Value实现给静态变量注入值

    这篇文章主要介绍了SpringBoot使用@Value实现给静态变量注入值的方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java ASM使用logback日志级别动态切换方案展示

    Java ASM使用logback日志级别动态切换方案展示

    这篇文章主要介绍了Java ASM使用logback日志级别动态切换方案展示,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • SpringMVC注解@RequestParam方法原理解析

    SpringMVC注解@RequestParam方法原理解析

    这篇文章主要介绍了SpringMVC注解@RequestParam方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • java -jar启动服务并输出日志常用命令小结

    java -jar启动服务并输出日志常用命令小结

    这篇文章主要介绍了在Linux环境下运行JAR包的几种方法,包括在命令结尾添加&使其在后台运行,使用nohup使程序不挂断运行,以及将日志输出到指定文件或丢弃,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03

最新评论