【MyBatis 基础操作 - 增删改查】

MyBatis 基础操作 - 增删改查

1. 概述

MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 通过 XML 或注解的方式将 Java 对象与数据库中的记录进行映射,简化了数据库操作的开发工作。本文将详细讲解 MyBatis 的基础操作,包括增删改查(CRUD)操作,重点介绍 XML 和注解配置。

2. XML 配置
2.1 配置文件

MyBatis 的配置文件 mybatis-config.xml 主要用于配置数据源、事务管理器和映射器等。以下是一个简单的配置示例:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="your_password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/demo/mapper/UserMapper.xml"/>
    </mappers>
</configuration>
2.2 Mapper XML 文件

Mapper XML 文件用于定义 SQL 语句和映射关系。以下是一个包含增删改查操作的 UserMapper.xml 示例:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.example.demo.mapper.UserMapper">

    <!-- 插入用户 -->
    <insert id="insertUser" parameterType="com.example.demo.entity.User">
        INSERT INTO user(name, email) VALUES(#{name}, #{email})
    </insert>

    <!-- 根据ID查询用户 -->
    <select id="findUserById" parameterType="int" resultType="com.example.demo.entity.User">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <!-- 更新用户 -->
    <update id="updateUser" parameterType="com.example.demo.entity.User">
        UPDATE user SET name = #{name}, email = #{email} WHERE id = #{id}
    </update>

    <!-- 删除用户 -->
    <delete id="deleteUser" parameterType="int">
        DELETE FROM user WHERE id = #{id}
    </delete>

    <!-- 查询所有用户 -->
    <select id="findAllUsers" resultType="com.example.demo.entity.User">
        SELECT * FROM user
    </select>
</mapper>
3. 注解配置

MyBatis 也支持使用注解来定义 SQL 语句和映射关系,这种方式更加简洁,适用于简单的 SQL 操作。

3.1 Mapper 接口

以下是一个使用注解的 UserMapper 接口示例:

package com.example.demo.mapper;

import com.example.demo.entity.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface UserMapper {

    @Insert("INSERT INTO user(name, email) VALUES(#{name}, #{email})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    void insertUser(User user);

    @Select("SELECT * FROM user WHERE id = #{id}")
    User findUserById(Integer id);

    @Update("UPDATE user SET name = #{name}, email = #{email} WHERE id = #{id}")
    void updateUser(User user);

    @Delete("DELETE FROM user WHERE id = #{id}")
    void deleteUser(Integer id);

    @Select("SELECT * FROM user")
    List<User> findAllUsers();
}
4. 增删改查操作
4.1 插入用户

使用 XML 配置:

<insert id="insertUser" parameterType="com.example.demo.entity.User">
    INSERT INTO user(name, email) VALUES(#{name}, #{email})
</insert>

使用注解配置:

@Insert("INSERT INTO user(name, email) VALUES(#{name}, #{email})")
@Options(useGeneratedKeys = true, keyProperty = "id")
void insertUser(User user);

@Options(useGeneratedKeys = true, keyProperty = "id") 是 MyBatis 中的一个注解,用于在插入数据时获取数据库自动生成的主键值。具体来说,这个注解的作用如下:

  1. useGeneratedKeys = true:这个属性告诉 MyBatis 使用数据库的自动生成键值功能。当插入一条记录时,数据库会自动生成一个主键值(例如,使用自增列),MyBatis 需要获取这个生成的键值。

  2. keyProperty = “id”:这个属性指定将生成的键值赋值给 Java 对象的哪个属性。在这个例子中,keyProperty = "id" 表示生成的键值将被赋值给 Java 对象的 id 属性。

结合这两个属性,@Options(useGeneratedKeys = true, keyProperty = "id") 的作用是:在插入数据时,让 MyBatis 获取数据库自动生成的主键值,并将其赋值给传入的 Java 对象的 id 属性。

在这个示例中,假设 `User` 类有一个 `id` 属性:

```java
public class User {
    private Integer id;
    private String name;
    private String email;

    // Getters and Setters
}

当调用 insertUser 方法插入一条记录时,数据库会自动生成一个 id 值,MyBatis 会将这个生成的 id 值赋值给传入的 User 对象的 id 属性。这样,在插入操作完成后,User 对象的 id 属性就会被正确赋值。

例如:

User user = new User();
user.setName("John Doe");
user.setEmail("john.doe@example.com");

userMapper.insertUser(user);

// 现在 user.getId() 将包含数据库生成的 id 值
System.out.println(user.getId());

通过这种方式,MyBatis 简化了获取自动生成主键值的过程,使得代码更加简洁和直观。

4.2 查询用户

使用 XML 配置:

<select id="findUserById" parameterType="int" resultType="com.example.demo.entity.User">
    SELECT * FROM user WHERE id = #{id}
</select>

使用注解配置:

@Select("SELECT * FROM user WHERE id = #{id}")
User findUserById(Integer id);
4.3 更新用户

使用 XML 配置:

<update id="updateUser" parameterType="com.example.demo.entity.User">
    UPDATE user SET name = #{name}, email = #{email} WHERE id = #{id}
</update>

使用注解配置:

@Update("UPDATE user SET name = #{name}, email = #{email} WHERE id = #{id}")
void updateUser(User user);
4.4 删除用户

使用 XML 配置:

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

使用注解配置:

@Delete("DELETE FROM user WHERE id = #{id}")
void deleteUser(Integer id);
4.5 查询所有用户

使用 XML 配置:

<select id="findAllUsers" resultType="com.example.demo.entity.User">
    SELECT * FROM user
</select>

使用注解配置:

@Select("SELECT * FROM user")
List<User> findAllUsers();
5. 总结

通过以上示例,我们详细讲解了 MyBatis 的基础操作,包括增删改查(CRUD)操作,重点介绍了 XML 和注解配置。MyBatis 提供了灵活的配置方式,可以根据项目需求选择合适的配置方式。希望这个教程能帮助你更好地理解和掌握 MyBatis 的基础操作。

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要重新演唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值