MyBatis、MyBatis-Plus、MyBatis-Example 查询数据库的方式

常见技术问题

在使用 MyBatis、MyBatis-Plus 和 MyBatis-Example 时,查询数据库可以通过多种方式来实现。以下是这三个工具查询数据

刘宇帅 3289 0 1年前

文章内容

在使用 MyBatisMyBatis-PlusMyBatis-Example 时,查询数据库可以通过多种方式来实现。以下是这三个工具查询数据库的常用方式和示例。

1. MyBatis 查询方式

MyBatis 是一个轻量级的持久层框架,支持自定义 SQL 查询。通常查询数据库的方式包括通过 XML 映射文件、注解、自定义 SQL 查询等。

1.1 XML 映射文件查询

MyBatis 中的常见方式是通过 XML 文件配置 SQL 查询语句。例如:

<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">

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

</mapper>

对应的接口定义:

public interface UserMapper {
    User selectById(int id);
}

1.2 注解方式查询

MyBatis 支持通过注解直接在接口中定义 SQL 查询语句:

public interface UserMapper {

    @Select("SELECT * FROM users WHERE id = #{id}")
    User selectById(@Param("id") int id);
}

1.3 动态 SQL 查询

MyBatis 支持动态 SQL,可以根据条件构建查询语句,例如使用 ifwhere 标签:

<select id="findByConditions" resultType="User">
    SELECT * FROM users
    <where>
        <if test="name != null">
            AND name = #{name}
        </if>
        <if test="age != null">
            AND age = #{age}
        </if>
    </where>
</select>

对应接口:

public interface UserMapper {
    List<User> findByConditions(@Param("name") String name, @Param("age") Integer age);
}

2. MyBatis-Plus 查询方式

MyBatis-Plus 是 MyBatis 的增强工具,提供了一些内置的 CRUD 接口,简化了查询操作。MyBatis-Plus 中常用的查询方式包括 BaseMapper 的内置方法和条件构造器。

2.1 使用 BaseMapper 的内置方法

MyBatis-Plus 的 BaseMapper 接口提供了许多内置的查询方法,例如 selectByIdselectList 等。

public interface UserMapper extends BaseMapper<User> {
}

// 使用内置方法查询
@Autowired
private UserMapper userMapper;

public User getUserById(int id) {
    return userMapper.selectById(id);
}

2.2 使用条件构造器查询

MyBatis-Plus 提供了 QueryWrapperLambdaQueryWrapper 作为条件构造器,支持链式查询条件。

@Autowired
private UserMapper userMapper;

public List<User> getUsersByConditions(String name, Integer age) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("name", name).ge("age", age);
    return userMapper.selectList(queryWrapper);
}

也可以使用 LambdaQueryWrapper 以更强的类型安全方式:

LambdaQueryWrapper<User> lambdaQuery = new LambdaQueryWrapper<>();
lambdaQuery.eq(User::getName, name).ge(User::getAge, age);
return userMapper.selectList(lambdaQuery);

3. MyBatis-Example 查询方式

MyBatis-Example 提供了基于条件构造器的查询方式,通常通过 Example 类来实现动态查询条件,简化复杂 SQL 查询条件的构建。MyBatis-Example 通常与 tk.mybatis.mapper 一起使用。

3.1 使用 Example 进行条件查询

MyBatis-Example 中的 Example 类允许我们以面向对象的方式构建查询条件:

@Autowired
private UserMapper userMapper;

public List<User> getUsersByConditions(String name, Integer age) {
    Example example = new Example(User.class);
    Example.Criteria criteria = example.createCriteria();

    if (name != null) {
        criteria.andEqualTo("name", name);
    }
    if (age != null) {
        criteria.andGreaterThanOrEqualTo("age", age);
    }

    return userMapper.selectByExample(example);
}

4. 三种方式的总结

方式 适用场景 优点 缺点
MyBatis XML 复杂 SQL 查询,灵活的 SQL 控制 SQL 灵活,可支持复杂查询 需要手动编写 XML
MyBatis 注解 简单 SQL 查询 更直接的查询定义方式 注解不适合复杂查询
MyBatis 动态 SQL 条件查询,根据传参动态构建 SQL SQL 语句动态生成 配置 XML 文件
MyBatis-Plus 内置方法 简单的 CRUD 操作,快速实现基本数据库操作 内置 CRUD 方法,减少代码量 灵活性相对低,适用于简单查询
MyBatis-Plus 条件构造器 条件查询和动态查询,数据量大、条件复杂的业务场景 链式调用,类型安全 需熟悉 MyBatis-Plus 语法
MyBatis-Example 动态条件查询,生成的条件 SQL 比较多、结构化查询较多的项目场景 条件构造器更直观,简化动态查询的编写 依赖 Example 类进行查询

通过这些方式,MyBatis、MyBatis-Plus 和 MyBatis-Example 可以满足各种复杂程度不同的查询需求。选择哪种方式取决于项目需求和团队的技术栈偏好。

专栏信息

常见技术问题
作者 刘宇帅
发布时间 1年前
阅读量 3289
评论数 0

摘要

在使用 MyBatis、MyBatis-Plus 和 MyBatis-Example 时,查询数据库可以通过多种方式来实现。以下是这三个工具查询数据


暂无评论~

更多专栏文章

idea 提示 the file size exceeds the configured limit .Code insight features are not avaliable

在 IntelliJ IDEA 中,提示 “the file size exceeds the configured limit. Code insight features are not available” 表示当前文件的大小超出了 IDEA 的默认限制,因此无法启用代码自动提示、语法高亮等功能。默认文件大小限制为 2.5 MB。 解决方法 方

查看文章

ProxySQL详解

ProxySQL 是一个高性能、高可用性的 MySQL 代理,旨在为 MySQL 数据库提供负载均衡、读写分离、故障转移、查询缓存等高级功能。它通过在客户端和 MySQL 服务器之间充当中间层,实现对数据库连接和查询的智能管理,从而提升整体系统的性能和可靠性。

查看文章

git仓库迁移方法

迁移 Git 仓库是一个常见需求,尤其是在更换代码托管平台(如从 GitHub 迁移到 GitLab,或从本地仓库迁移到远程仓库)时。以下是几种常见的 Git 仓库迁移方法,具体使用哪种方法取决于你需要保留的内容(如历史记录、分支、

查看文章

Base64详解

Base64 是一种常用的编码方式,用于将二进制数据转换为ASCII字符,以便在文本环境中安全地传输和存储。由于许多传输媒介(如电子邮件、HTTP协议)对二进制数据有特定的限制或处理方式,Base64提供了一种可靠的方法来确保数据在这些环境中的完整性和可读性。

查看文章

Maven setting.xml 详解

一、什么是 settings.xml settings.xml 是 Maven 的配置文件,用于定义用户级别或全局的构建配置。它包含了对 Maven 构建过程影响较大的设置,如: 本地仓库的位置 远程仓库的镜像 代理服务器配置 认证信息(如私有仓库的用户名和

查看文章