您现在的位置是:首页 > 编程 > 

Mybatis多条件查询:Map传参与对象传参解析

2025-07-27 06:49:28
Mybatis多条件查询:Map传参与对象传参解析 Mybatis 多条件查询常见且关键,本文探讨两种方法——Map 传参和 Java Bean 对象传参,展示用法及区别,总结应用场景和优缺点。1. Map传参方式原理:Mybatis允许我们通过一个Map对象来传递动态SQL中的参数。Map的键对应于SQL语句中占位符的名称,值则是实际的参数值。代码示例:Mybatis全局配置文件示例片段。代码语

Mybatis多条件查询:Map传参与对象传参解析

Mybatis 多条件查询常见且关键,本文探讨两种方法——Map 传参和 Java Bean 对象传参,展示用法及区别,总结应用场景和优缺点。

1. Map传参方式

原理:Mybatis允许我们通过一个Map对象来传递动态SQL中的参数。Map的键对应于SQL语句中占位符的名称,值则是实际的参数值。

代码示例

Mybatis全局配置文件示例片段。

代码语言:java复制
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis//DTD Config .0//E"
        ".dtd">
<configuration>
    <!-- 数据源配置 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:06/mydatabase"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 映射器配置,可以自动扫描包中的Mapper接口 -->
    <mappers>
        <package name=""/>
        <!-- 或者单独指定Mapper XML文件 -->
        <!-- <mapper resource="com/example/dao/mapper/UserMapper.xml"/> -->
    </mappers>
</configuration>

根据 Map 键值对生成 SQL 条件,实现多条件动态查询。

代码语言:java复制
// DAO层方法定义
public List<User> findUsers(Map<String, Object> params);

// Service层调用
Map<String, Object> params = new HashMap<>();
params.put("name", "John");
params.put("age", 25);
List<User> users = userDao.findUsers(params);

// Mapper.xml配置
<select id="findUsers" resultType="User">
    SELECT * FROM user 
    <where>
        <if test="name != null">
            name = #{name}
        </if>
        <if test="age != null">
            AD age = #{age}
        </if>
    </where>
</select>

2. 对象传参方式

原理:另一种方式是直接使用Java Bean对象作为参数传递给Mapper接口方法。Mybatis会自动将对象的属性名映射为SQL中的参数名。

代码示例

创建 UserQueryParams 类封装查询条件,传递给 Mapper 方法,Mybatis 自动处理对象属性到 SQL 参数映射。

代码语言:java复制
// 定义一个用于传递查询条件的Java Bean
public class UserQueryParams {
    private String name;
    private Integer age;
    // ... getters and setters
}

// DAO层方法定义
public List<User> findUsers(UserQueryParams queryParams);

// Service层调用
UserQueryParams queryParams = new UserQueryParams();
queryParams.setame("John");
queryParams.setAge(25);
List<User> users = userDao.findUsers(queryParams);

// Mapper.xml配置
<select id="findUsers" resultType="User">
    SELECT * FROM user 
    <where>
        <if test=" != null">
            name = #{}
        </if>
        <if test="queryParams.age != null">
            AD age = #{queryParams.age}
        </if>
    </where>
</select>

. 区别总结

Map 传参:灵活,无需定义 Java Bean,适用于临时或多变查询条件。

对象传参:结构清晰,可读性强,适用于固定、复杂查询条件组合,借助 IDE 自动补全提高开发效率,便于维护扩展,适用于有预定义模型的业务场景,如用户搜索界面多种筛选条件对应 Java Bean 属性。

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1201757.html

相关标签:无
上传时间: 2025-07-24 00:42:00
留言与评论(共有 7 条评论)
本站网友 胡一鸣博客
1分钟前 发表
1. Map传参方式原理:Mybatis允许我们通过一个Map对象来传递动态SQL中的参数
本站网友 济南按摩
27分钟前 发表
Mybatis多条件查询:Map传参与对象传参解析 Mybatis 多条件查询常见且关键
本站网友 网上售楼处
28分钟前 发表
如用户搜索界面多种筛选条件对应 Java Bean 属性
本站网友 海博
3分钟前 发表
Mybatis会自动将对象的属性名映射为SQL中的参数名
本站网友 港汇恒隆广场
30分钟前 发表
实现多条件动态查询
本站网友 北京文化热线
30分钟前 发表
适用于有预定义模型的业务场景