`

Mybatis 遍历 map

阅读更多
在做mybatis物理端分页的过程中遇到通过遍历page对象中的参数map来拼写动态SQL,而传入的paramType类型是page对象,这个map中的key是数据库中的字段SQL的where条件是key=value



<select id="getEmployeePage" resultType="Employee" parameterType="Page"  >  
   		
   		SELECT  * FROM t_employee 
   		
   		<if test="null != params and  params.size()> 0"> WHERE  '1'='1'  </if> 
   		 
   		<foreach collection="params" index="key" item="item" open=""  close="" >
          
            <choose>
   				<when test="key =='RealName' and item !=null and item !=''">
  					
  					and ${key}  LIKE  CONCAT(CONCAT('%', #{params.${key}}), '%')
  					
  				</when>
  				<when test=" item != null and item!=''">
  					
  					and  ${key} =  #{params.${key}}
  					
  				</when>
  				
  				<otherwise>
 					
  				</otherwise>
  			</choose>
      	</foreach> 
   		
	</select> 





分享到:
评论

相关推荐

    SpringBoot+Mybatis,返回Map的时候,将Map内的Key转换为驼峰的命名

    `underscoreToCamelCase`方法则负责将下划线分隔的字符串转换为驼峰命名,通过遍历并替换每个部分的首字母为大写实现。 在SpringBoot中,你可以在Mybatis的Mapper接口方法中使用这个工具类。例如,当从数据库查询到...

    Map和Bean灵活转换工具类

    这些工具类会遍历Map的每个键值对或Bean的每个属性,通过反射找到对应的setter方法并调用,从而完成数据的转换。 需要注意的是,由于反射的使用,这些工具类在提高灵活性的同时也可能带来一些性能开销。因此,在...

    将Map转换成Java实体

    接着,遍历实体类的所有声明字段(不包括继承的字段),设置每个字段的值为Map中对应的键值。注意,由于Java的封装特性,我们需要通过`setAccessible(true)`使私有属性可访问。 这个方法虽然简单,但已经能够满足...

    mybatis-3.0.4源码

    2. Map参数:当参数复杂时,可以使用Map将参数键值对传入,通过`@Param`注解指定参数名。 五、缓存机制 MyBatis提供了一级缓存和二级缓存,可以提高数据访问速度。一级缓存是SqlSession级别的,同一SqlSession内的...

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

    在Mapper XML文件中,可以通过`&lt;foreach&gt;`标签遍历Map的键值对。例如,查询用户根据用户名和年龄: ```xml SELECT * FROM user WHERE username = #{username} AND age = #{age} ``` 在Java代码中,创建Map...

    关于MyBatis参数传入#{index}的问题的解决方案【源码】

    在源码层面,MyBatis在解析XML映射文件时,会遍历所有的#{index}并查找对应的参数。如果使用了@Param或Map,MyBatis可以通过注解或键值对找到参数值。当使用#{index}时,如果没有提供键值对,MyBatis将无法匹配到...

    map转化为list

    一种常见的方式是创建一个新的List,然后遍历Map的entrySet(),将每个键值对作为新List的一个元素添加进去。如果需要分别获取键和值,可以创建两个List,一个存放键,一个存放值。 描述中提到的博客链接可能详细...

    MyBatis动态拼接SQL

    5. `&lt;foreach&gt;`标签:用于遍历集合或数组,生成对应的SQL片段,如IN语句。这是动态SQL中非常常用的一个标签。 ```xml DELETE FROM table WHERE id IN (" separator="," close=")"&gt; #{item} ``` 在实际开发...

    mybatis-3.5.4.pdf

    通过使用简单的XML或注解进行配置,可以将原始类型、Map接口和Java POJO(Plain Old Java Objects)映射到数据库记录,极大地简化了JDBC代码编写、参数设置及结果集处理等工作。 #### 1.2 文档贡献与翻译 文档鼓励...

    SQL.rar_MyBatis3DynamicSql_dynamic mybatis_mybatis_mybatis Dyna

    5. `&lt;foreach&gt;`标签:用于遍历集合,构建IN或NOT IN子句,也可以用于动态生成ORDER BY或GROUP BY等。 在实际应用中,我们通常会在Mapper接口的XML配置文件中使用这些动态SQL元素。例如,可以创建一个根据多个条件...

    测试mybatis里foreach用法

    在MyBatis中,`&lt;foreach&gt;`标签是一个非常重要的元素,它主要用于动态SQL语句的构建,尤其是在处理集合数据类型如List、Array、Map时。`&lt;foreach&gt;`标签的使用可以极大地提高代码的可读性和可维护性,避免了传统的字符...

    MyBatis传入多个参数的问题

    `foreach`标签用于遍历`list`中的元素,并生成相应的`in`子句。 #### 五、多参数传递之注解方式 使用`@Param`注解可以更清晰地标识多参数。例如: ```java public AddrInfo getAddrInfo(@Param("corpId") int ...

    mybatis Mapper.xml中传参多选 字符串形式逗号分隔 AND中拼接OR.rar

    在实际开发中,你还需要在对应的Java接口和实现类中编写对应的方法,将前端传递的参数正确地绑定到Map对象中,并调用Mybatis的SqlSession执行查询。 总的来说,Mybatis提供了一套灵活的机制来处理动态SQL,包括处理...

    Jsp+Servlet+MyBatis完成分页查询

    6. **更新JSP页面**:最后,JSP页面接收到响应数据后,使用JSTL或其他标签库来遍历并展示数据。同时,还可以生成分页导航链接,使用户能够方便地浏览其他页面。 通过以上步骤,我们便成功地使用JSP、Servlet和...

    学习手册 “玩转”Java系列 — Mybatis

    - 使用Map或JavaBean作为方法参数,Mybatis会自动映射。 7. **结果映射** - `@Result`和`@Results`注解可以定义复杂结果映射,处理一对多、一对一等关系。 - `@One`和`@Many`注解用于关联映射,简化了多对一和多...

    MyBatis框架笔记1

    例如,使用、、、等标签实现条件判断,标签用于循环遍历集合。这样,可以在不改变Java代码的情况下修改SQL逻辑,提高了代码的可维护性。 总之,MyBatis通过提供简洁的API和灵活的SQL构造,极大地提升了Java开发者...

    Mybatis3系列课程8-带参数查询

    这种情况下,可以使用`&lt;foreach&gt;`标签遍历Map,生成对应的SQL条件。 7. 使用Example类:Mybatis-Plus等扩展库提供了Example类,用于快速构建复杂的查询条件。通过设置Example类的Criteria,可以方便地实现带参数的...

    mybatis笔记

    - **使用 Map 传参**:Map 的 key 必须与 SQL 中的 #{key} 相对应。 - **使用 @Param 传参**:为参数添加注解,提高代码可读性。 #### 八、SQL 语法差异 - **# 和 $ 的区别**: - **#**:将传入的数据当作字符串...

    mybatis对数据库基本操作

    5. **结果映射**: MyBatis 支持自动将数据库查询结果映射到 Java 对象,包括单个对象、List 对象、Map 结果等。可以使用 `resultType` 指定返回类型,或使用 `resultMap` 定义复杂的映射规则。 6. **缓存机制**: ...

    mybatis-demo11-动态SQL语句.zip

    &lt;select id="selectUser" parameterType="map" resultType="User"&gt; SELECT * FROM user != null"&gt;name = #{name} != null"&gt;AND age = #{age} ``` 5. **Trim标签**: `&lt;trim&gt;`标签与`&lt;where&gt;`类似,但...

Global site tag (gtag.js) - Google Analytics