MyBatis CURD操作深度解析

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: MyBatis提供了<insert>、<update>和<delete>等元素来执行插入、更新和删除操作。以下是一个简单的插入操作的例子

MyBatis作为一款优秀的Java持久层框架,提供了强大的CURD(Create, Update, Read, Delete)操作支持。在本文中,我们将深入探讨如何在MyBatis中执行简单的查询,以及如何进行插入、更新和删除操作。同时,我们还将详细解释MyBatis中的selectKey元素的作用。

a98088ccf6878df7718adc1252dc6722_18edc9bf2e7247e799822098cc611266.png


简单查询操作

在MyBatis中执行简单的查询操作通常涉及到使用<select>元素。以下是一个简单的例子:

<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
    <select id="getUserById" resultType="User">
        SELECT * FROM users WHERE id = #{id}
    </select>
</mapper>


在这个例子中,我们定义了一个名为getUserById的查询操作,通过#{id}引用参数。resultType="User"表示我们期望的查询结果将映射到User对象。


接下来,我们可以在Java代码中调用这个查询操作:


// UserDao.java
public interface UserDao {
    User getUserById(int id);
}


// UserDaoImpl.java
public class UserDaoImpl implements UserDao {
    private SqlSessionFactory sqlSessionFactory;
    public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
        this.sqlSessionFactory = sqlSessionFactory;
    }
    @Override
    public User getUserById(int id) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            return sqlSession.selectOne("com.example.UserMapper.getUserById", id);
        }
    }
}


在这里,我们使用SqlSession的selectOne方法执行查询操作,指定了查询的命名空间和操作ID。这样,我们就能够根据用户ID获取对应的用户信息。


插入、更新和删除操作

MyBatis提供了<insert>、<update>和<delete>等元素来执行插入、更新和删除操作。以下是一个简单的插入操作的例子:


<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
    <insert id="insertUser" parameterType="User">
        INSERT INTO users (username, email) VALUES (#{username}, #{email})
    </insert>
</mapper>


在这个例子中,我们定义了一个名为insertUser的插入操作,使用#{username}和#{email}引用User对象的属性。


类似地,更新和删除操作可以通过<update>和<delete>元素进行定义。


<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
    <update id="updateUser" parameterType="User">
        UPDATE users SET username = #{username}, email = #{email} WHERE id = #{id}
    </update>
    <delete id="deleteUserById" parameterType="int">
        DELETE FROM users WHERE id = #{id}
    </delete>
</mapper>


在Java代码中,我们可以分别调用SqlSession的insert、update和delete方法来执行这些操作。

// UserDao.java
public interface UserDao {
    void insertUser(User user);
    void updateUser(User user);
    void deleteUserById(int id);
}


// UserDaoImpl.java
public class UserDaoImpl implements UserDao {
    private SqlSessionFactory sqlSessionFactory;
    public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
        this.sqlSessionFactory = sqlSessionFactory;
    }
    @Override
    public void insertUser(User user) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            sqlSession.insert("com.example.UserMapper.insertUser", user);
            sqlSession.commit();
        }
    }
    @Override
    public void updateUser(User user) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            sqlSession.update("com.example.UserMapper.updateUser", user);
            sqlSession.commit();
        }
    }
    @Override
    public void deleteUserById(int id) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            sqlSession.delete("com.example.UserMapper.deleteUserById", id);
            sqlSession.commit();



在这里,我们分别实现了插入、更新和删除操作。需要注意的是,我们在每个操作执行后都调用了commit方法提交事务。

selectKey元素的作用

selectKey元素是MyBatis中一个比较特殊且强大的元素,它通常用于在执行插入操作后获取生成的主键值。以下是一个使用selectKey元素的例子:


<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
    <insert id="insertUser" parameterType="User">
        <selectKey keyProperty="id" resultType="int" order="AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey>
        INSERT INTO users (username, email) VALUES (#{username}, #{email})
    </insert>
</mapper>


在这个例子中,selectKey元素的作用是在插入操作后执行SELECT LAST_INSERT_ID()语句,获取生成的主键值,并将其设置到User对象的id属性中。


// UserDao.java
public interface UserDao {
    void insertUser(User user);
}
1
2
3
4
// UserDaoImpl.java
public class UserDaoImpl implements UserDao {
    private SqlSessionFactory sqlSessionFactory;
    public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
        this.sqlSessionFactory = sqlSessionFactory;
    }
    @Override
    public void insertUser(User user) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            sqlSession.insert("com.example.UserMapper.insertUser", user);
            sqlSession.commit();
            System.out.println("Generated ID after insertion: " + user.getId());
        }
    }
}


在Java代码中,我们仍然只需要调用insertUser方法,而不用手动设置主键值。


结语

MyBatis提供了丰富而强大的CURD操作支持,通过简单的配置和映射文件,我们能够轻松地实现对数据库的增、删、改、查。同时,selectKey元素的灵活运用使得获取生成的主键值变得非常方便。在实际项目中,对这些CURD操作的熟练运用将对数据持久层的开发产生积极的影响。

相关文章
|
3月前
|
安全 Java 数据库连接
后端框架的学习----mybatis框架(3、配置解析)
这篇文章详细介绍了MyBatis框架的核心配置文件解析,包括环境配置、属性配置、类型别名设置、映射器注册以及SqlSessionFactory和SqlSession的生命周期和作用域管理。
后端框架的学习----mybatis框架(3、配置解析)
|
5月前
|
缓存 Java 数据库连接
我们后端程序员不是操作MyBatis的CRUD Boy
大家好,我是南哥。一个对Java程序员进阶成长颇有研究的人,今天我们接着新的一篇Java进阶指南。为啥都戏称后端是CRUD Boy?难道就因为天天怼着数据库CRUD吗?要我说,是这个岗位的位置要的就是你CRUD,你不得不CRUD。哪有公司天天能给你搭建高并发、高可用、大数据框架的活呢,一条业务线总要成长吧,慢慢成熟了就要装修工来缝缝补补、美化美化,也就是CRUD的活。不能妄自菲薄CRUD Boy,我们是后端工程师。今天来指南下操作数据库之MyBatis框架。
120 3
我们后端程序员不是操作MyBatis的CRUD Boy
|
4月前
|
SQL 安全 数据库
Ruby on Rails 数据库迁移操作深度解析
【7月更文挑战第19天】Rails 的数据库迁移功能是一个强大的工具,它帮助开发者以版本控制的方式管理数据库结构的变更。通过遵循最佳实践,并合理利用 Rails 提供的迁移命令和方法,我们可以更加高效、安全地管理数据库结构,确保应用的稳定性和可扩展性。
|
4月前
|
SQL 缓存 Java
使用MyBatis优化Java持久层操作
使用MyBatis优化Java持久层操作
|
5月前
|
存储 算法 搜索推荐
深入解析String数组的操作与性能优化策略
深入解析String数组的操作与性能优化策略
|
4月前
|
存储 数据管理 数据库
CRUD操作实战:从理论到代码实现的全面解析
【7月更文挑战第4天】在软件开发领域,CRUD代表了数据管理的四个基本操作:创建(Create)、读取(Read)、更新(Update)和删除(Delete)。这四个操作构成了大多数应用程序数据交互的核心。本文将深入讲解CRUD概念,并通过一个简单的代码示例,展示如何在实际项目中实现这些操作。我们将使用Python语言结合SQLite数据库来演示,因为它们的轻量级特性和易用性非常适合教学目的。
340 2
|
4月前
|
SQL 缓存 Java
使用MyBatis优化Java持久层操作
使用MyBatis优化Java持久层操作
|
4月前
|
存储 算法 搜索推荐
深入解析String数组的操作与性能优化策略
深入解析String数组的操作与性能优化策略
|
4月前
|
JavaScript
js 解析和操作树 —— 获取树的深度、提取并统计树的所有的节点和叶子节点、添加节点、修改节点、删除节点
js 解析和操作树 —— 获取树的深度、提取并统计树的所有的节点和叶子节点、添加节点、修改节点、删除节点
117 0
|
5月前
|
SQL DataWorks Oracle
DataWorks产品使用合集之datax解析oracle增量log日志该如何操作
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
56 0

推荐镜像

更多