Mybatis学习笔记-动态SQL和模糊查询

本文介绍如何使用MyBatis实现动态SQL拼接及模糊查询功能,通过具体实例展示了如何配置Mapper文件来实现多条件查询用户信息,包括姓名模糊匹配及年龄范围筛选。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇博文把Mybatis关联表查询的一些知识做了一个总结,代码已经发布到Github有兴趣的朋友可以自行下载。平时在做开发的时候,除了多张表查询的问题,还有就是查询时动态拼接SQL以及模糊查询的一些问题,本文就实践和总结一下这方面的问题。

问题需求

实现多条件查询用户(姓名模糊匹配, 年龄在指定的最小值到最大值之间)

测试数据

create table d_user(  
    id int primary key auto_increment,  
    name varchar(10),
    age int(3)
); 
insert into d_user(name,age) values('Tom',12);  
insert into d_user(name,age) values('Bob',13);  
insert into d_user(name,age) values('Jack',18);

数据结构
这里写图片描述

创建查询条件对应的实体类

package com.taowd.mybatis.entry;
/**
 * 功能:查询条件对应的实体类
 * @author Taowd
 *
 */
public class ConditionUser {
private String name;
private Integer minAge;
private Integer maxAge;
//set get toString()等方法省略

}

创建表对应的数据实体

public class User {
private int id;
private String name;
private int age;
//set get toString()等方法省略
}

配置Mapper映射文件

<!-- 测试动态SQL和模糊查询 -->
<select id="getUser" parameterType="com.taowd.mybatis.entry.ConditionUser"
    resultType="com.taowd.mybatis.entry.User">
    select * from d_user where age >= #{minAge} and age&lt;=#{maxAge}
    <if test='name!="%null%"'>and name like #{name}</if>
</select>

mybatis配置文件中配置映射文件

<mappers>
    <mapper resource="mapper/userMapper.xml" />
</mappers>

测试方法和测试结果

测试方法和结果


遇到的错误:

错误1:

Mapper文件中定义Sql语句的id时出现重复,执行测试方法时 报错:
这里写图片描述

原因:mapper文件中定义Sql时出现重复

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值