MyBatis的增删改操作

UserMapper 接口定义

MyBatis 的增删改操作通常在 Mapper 接口中定义方法,通过注解或 XML 映射文件实现 SQL 绑定。以下是典型的增删改方法定义示例:

public interface UserMapper {
    // 插入用户
    @Insert("INSERT INTO user(name, age, email) VALUES(#{name}, #{age}, #{email})")
    int insertUser(User user);

    // 更新用户
    @Update("UPDATE user SET name=#{name}, age=#{age}, email=#{email} WHERE id=#{id}")
    int updateUser(User user);

    // 删除用户
    @Delete("DELETE FROM user WHERE id=#{id}")
    int deleteUserById(Long id);
}

单元测试实现

单元测试用于验证 Mapper 方法的正确性,通常使用 Spring Boot 的 @SpringBootTest 或 MyBatis 原生测试工具。以下是基于 JUnit 5 的测试示例:

@SpringBootTest
public class UserMapperTest {
    @Autowired
    private UserMapper userMapper;

    @Test
    @Transactional // 测试后自动回滚
    void testInsertUser() {
        User user = new User(null, "Alice", 25, "alice@example.com");
        int result = userMapper.insertUser(user);
        assertEquals(1, result); // 验证影响行数
        assertNotNull(user.getId()); // 验证自增ID回填
    }

    @Test
    @Transactional
    void testUpdateUser() {
        User user = new User(1L, "Bob", 30, "bob@example.com");
        int result = userMapper.updateUser(user);
        assertEquals(1, result);
    }

    @Test
    @Transactional
    void testDeleteUser() {
        int result = userMapper.deleteUserById(1L);
        assertEquals(1, result);
    }
}

XML 映射方式

若使用 XML 配置代替注解,需在 resources/mapper/UserMapper.xml 中定义:

<mapper namespace="com.example.mapper.UserMapper">
    <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO user(name, age, email) VALUES(#{name}, #{age}, #{email})
    </insert>

    <update id="updateUser">
        UPDATE user SET name=#{name}, age=#{age}, email=#{email} WHERE id=#{id}
    </update>

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

参数传递说明

  • 插入操作useGeneratedKeys="true" 表示启用自增主键回填,keyProperty 指定回填到实体类的字段名。
  • 更新/删除操作:通常通过实体类或 @Param 注解传递参数,如 deleteUserById(@Param("id") Long id)

事务控制建议

  • 测试类添加 @Transactional 注解使操作在测试后自动回滚,避免污染数据库。
  • 生产环境需在 Service 层使用 @Transactional 管理事务。

日志调试技巧

application.properties 中开启 MyBatis 日志可查看实际执行的 SQL:

logging.level.com.example.mapper=debug

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值