`

Mybatis多条件动态查询

 
阅读更多

当进行多条件动态查询时,最方便的使用@SelectProvider(type=XXXSqlProvider.class, method="getXXX")注解

此时我们需要编写自己的SqlProvider,我们需要用到org.apache.ibatis.jdbc.SqlBuilder中的静态方法,来看一段代码吧,如下:

public String getUserListByConditions(Map<String, Object> parameter){
		String age= (String) parameter.get("age");
		String isdead= (String) parameter.get("isdead");
		
		BEGIN();
		SELECT("*");
		FROM("user");
		if(age!=null&&!age.equals("")){
			int _age= Integer.parseInt(age);
			WHERE("age="+_age+"");
		}
		if(isdead!=null&&!isdead.equals("")){
			boolean _isdead= Boolean.parseBoolean(isdead);
			WHERE("isDisplay="+_isdead+"");
		}
		ORDER_BY("createtime DESC LIMIT #{offset}, #{pagesize}");
		
		return SQL();
	}

上面代码的意思是拼凑了一条sql语句,用以查询user。条件动态为:age,isdead,最后分页显示。

请注意该方法的参数parameter是获取Mapper传递过来的,对应的mapper如下:

@SelectProvider(type=UserSqlProvider.class, method="getUserListByConditions")
List<User> getUserListByConditions(@Param("age")String age,@Param("isdead")String isdead,@Param("offset")int offset,@Param("pagesize")int pageSize)

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    MyBatis动态条件通用查询

    MyBatis动态条件通用查询是数据库操作中常见的一种需求,它允许开发者在不编写大量重复SQL语句的情况下,根据传入的参数灵活地执行查询。这个功能的核心在于利用MyBatis的动态SQL特性,结合Map数据结构来构建可变的...

    MyBatis拦截器 添加查询条件动态修改sql

    通过mybatis的拦截器,实现为所有sql(或指定sql) 统一添加查询条件,譬如通过线程变量传递某参数(日期),来实现对指定参数的数据筛选,而不需要在每个查询前,手动将该条件注入到查询中。因该资料网络较少,故特此...

    java配合MyBatis 多条件查询及动态SQL

    MyBatis 多条件查询及动态SQL 粉丝可见 ybb_ymm 已于 2023-02-02 11:09:17 修改 642 收藏 3 分类专栏: java 文章标签: mybatis sql mysql 编辑 版权 java 专栏收录该内容 104 篇文章2 订阅 背景 MyBatis是一...

    mybatis多条件查询处理方案(查询条件为数据库字段非传递参数).pdf

    在MyBatis中,多条件查询是常见的需求,特别是在数据检索和过滤时。通常,我们会根据传递的参数来决定查询的条件。然而,有时我们可能需要根据数据库字段本身的状态来进行查询,而不是依赖于传递的参数。针对这种...

    4.5 MyBatis 单条件动态查询.pdf

    MyBatis 是一个开源的持久层框架,用于将 Java 对象与 SQL 数据库操作进行映射。它通过 XML 或者注解配置 SQL 映射关系,支持动态 SQL 和自动映射,同时提供声明式事务管理和插件扩展。适用于传统数据库操作和复杂 ...

    mybatis条件查询

    条件查询是MyBatis中非常关键的功能,它允许我们根据不同的参数条件动态构建SQL语句,以满足多样化的查询需求。 在MyBatis中,条件查询主要通过动态SQL实现,这通常涉及到`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `...

    mybatis常用语句和lyaui 多条件查询加分页

    ### MyBatis常用语句详解及Lyaui多条件查询加分页 #### 一、概述 在本篇文章中,我们将详细介绍MyBatis框架中的几种常用SQL语句编写方法及其应用场景,特别是针对数据库的增删改查操作。这些操作是任何Web应用开发...

    mybatis多表查询.zip

    MyBatis的动态SQL功能使得在多表查询时能够根据条件灵活生成SQL。通过`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;foreach&gt;`等标签,可以实现条件判断和循环结构,让SQL语句更具灵活性。 6. **...

    ssm框架\mybatis\动态sql\1.使用动态SQL完成多条件查询

    SSM框架,全称Spring+SpringMVC+MyBatis,是Java开发中常见的Web应用架构。MyBatis作为持久层框架,它允许开发者将SQL语句与Java代码分离,...在SSM框架下,MyBatis的动态SQL特性更是成为处理多条件查询的关键工具。

    封装通用的Spring3+Struts2+MyBatis3的CRUD+条件分页查询

    条件分页查询则是通过动态SQL来实现,可以根据传入的参数动态构造不同的WHERE子句,同时配合LIMIT或OFFSET关键字实现分页。 在"temperatureMonitor"这个具体应用中,可能涉及到监控系统的温度数据记录和查询。例如...

    mybatis-plus QueryWrapper条件查询器

    QueryWrapper还支持逻辑运算符,如`and`、`or`,可以组合多个条件进行查询。例如: ```java queryWrapper.and(wrapper -&gt; wrapper.eq("name", "张三").or().eq("name", "李四")); ``` 这段代码将查询名字为"张三...

    Mybatis多参数查询与列表查询不同方式实现

    比如,你可以根据条件动态生成WHERE子句。在Mapper XML中,使用`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签: ```xml SELECT * FROM user != null"&gt;username = #{username} != null"&gt;AND age = #{...

    mybatis 动态sql及参数传递

    目录 使用场景 动态标签 if标签 where标签 choose、when、otherwise 标签 ...if标签通常用那个胡where语句,update语句,insert语句中,通过判断参数值来决定是否使用某个查询条件,判断是否更新某一个字段或插入某个字段

    mybatis之动态SQL

    动态 SQL 是 MyBatis 的一大特色,它允许我们在运行时根据条件构建 SQL 语句,极大地提高了代码的可维护性和灵活性。 动态 SQL 在 MyBatis 中主要通过 XML 映射文件或者注解来实现。在 XML 映射文件中,我们可以...

    ssm框架\mybatis\动态sql\1.使用动态SQL完成多条件查询\示例3:改造用户表的查询操作-if+whe

    本示例主要关注MyBatis中的动态SQL功能,特别是如何使用`if`和`where`标签来优化多条件查询,提高代码的可读性和灵活性。 在MyBatis中,动态SQL是一种强大的特性,它允许我们在XML映射文件中根据需求构建SQL语句。...

    mybatis动态SQL练习 动态查询 动态修改.zip

    动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让...

    Mybatis实现动态代理,动态SQL

    例如,使用 `&lt;when&gt;` 标签来实现动态条件查询,可以使用 `&lt;choose&gt;` 标签来实现多个条件查询。 在实现更新语句时,可以使用 `&lt;set&gt;` 标签来动态设置if标签接口方法。例如,使用 `&lt;set&gt;` 标签来实现动态设置更新语句...

    Java的MyBatis框架中实现多表连接查询和查询结果分页

    MyBatis的动态SQL是其一大特色,通过`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;foreach&gt;`等标签,可以根据条件动态生成SQL语句。例如,如果需要根据某个条件过滤网站,可以这样编写: ```xml ...

    MyBatis拦截器分页与动态修改SQL及其参数值

    而`PagingByExampl`可能是指通过Example对象来实现分页,这种方式通常在配合MyBatis的Criteria查询时使用,允许用户基于复杂条件进行分页。 至于"MybatisPaging.java",这可能是封装了分页逻辑的一个工具类或者接口...

Global site tag (gtag.js) - Google Analytics