Mybatis多条件查询:Map传参与对象传参解析
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组装电脑配置单推荐报价格
上传时间: 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分钟前 发表 |
适用于有预定义模型的业务场景 |