Mybatis中使用循环遍历
Mybatis中传参数的方法
1.使用注解绑定,mapper.xml 对应方法 不需要指定 parameterType,(推荐使用注解绑定方式)
方法接口:
List<CalculateIdeacommissionsum> selectByExample(@Param("example") CalculateIdeacommissionsum example,@Param("roleNameList") List<String> roleNameList);
方法对应的Mapper.xml
<!-- 通过userStatus 排序查询 升序 -->
<select id="selectByExample" resultMap="BaseResultMap">
select
id, calculateYear, calculateMonth, userId, userCode, userName, userStatus, companyName,
companyId, curDeptId, curDeptName, roleName from Calculate_IdeaCommissionSum
where calculateYear=#{example.calculateYear,jdbcType=SMALLINT}
and calculateMonth=#{example.calculateMonth,jdbcType=SMALLINT}
and deleteFlag=#{example.deleteFlag,jdbcType=TINYINT}
<if test="roleNameList!=null and roleNameList.size()> 0">
<foreach collection="roleNameList" item="rolename" separator="," open="and rolename in(" close=")">
#{rolename,jdbcType=VARCHAR}
</foreach>
</if>
order by userStatus
</select>
2.如果接口参数没有使用注解绑定,mapper.xml 对应方法 需要指定对应的参数类型。
List<CalculateIdeacommissionsum> selectByExample(CalculateIdeacommissionsum example);
方法对应的Mapper.xml
<!-- 通过userStatus 排序查询 升序 -->
<select id="selectByExample" parameterType="实体类路径" resultMap="BaseResultMap">
select
id, calculateYear, calculateMonth, userId, userCode, userName, userStatus, companyName,
companyId, curDeptId, curDeptName, roleName from Calculate_IdeaCommissionSum
where calculateYear=#{calculateYear,jdbcType=SMALLINT}
and calculateMonth=#{calculateMonth,jdbcType=SMALLINT}
order by userStatus
</select>
3. parameterType 也可以使用Map存放参数进行查询
接口方法:
List<BaseEmpinfo> selectByParam(Map<String,String> map);
接口方法对应的Mapper.xml 文件方法:
<select id="selectByParam" parameterType="java.util.Map" resultType="com.pacific.rspBonus.model.po.twBonus.mbg.BaseEmpinfo">
select * from Base_EmpInfo
where deleteFlag=0
<if test="userName != null and userName!=''">
and userName=#{userName,jdbcType=VARCHAR}
</if>
</select>
4.mybatis 遍历循环
collection标识我们程序传值过来的集合
open表示我们遍历的集合以什么字符开始
close表示我们遍历的集合以什么字符结尾
item是给我们集合遍历取一个变量
separator 表示的是分隔符,将我们集合中遍历出来的数据用","分隔开。
<if test="roleNameList!=null and roleNameList.size()> 0">
<foreach collection="roleNameList" item="rolename" separator="," open="and rolename in(" close=")">
#{rolename,jdbcType=VARCHAR}
</foreach>
</if>
sql如下:
select * from Calculate_IdeaCommissionSum where calculateYear=2019 and calculateMonth=2 and roleName in ('副总经理','总监','经纪人');
将roleName的多个条件用关系转化为 roleName in (roleName1,roleName2,roleName3...) in中用foreach循环
参考博客:https://jingyan.baidu.com/album/00a07f3873520e82d028dcce.html?picindex=1
Mybatis中使用循环遍历的更多相关文章
- php中的循环遍历 foreach list each
foreach语句遍历数组foreach语句用于循环遍历数组,每进行一次循环,当前数组元素的值就会被赋值给变量value(也可以是其它变量),数组指针会逐一的移动. 代码示例: foreach($ar ...
- Java中ArrayList循环遍历并删除元素的陷阱
ava中的ArrayList循环遍历并且删除元素时经常不小心掉坑里,昨天又碰到了,感觉有必要单独写篇文章记一下. 先写个测试代码: import java.util.ArrayList; public ...
- Android中List循环遍历性能对照
在android开发中仅仅要是列表式风格界面我们差点儿都须要用到List来存放数据,在数量非常少的List的话差点儿不论什么一种循环遍历方式总体性能都无区别.可是当我们遇到数据量稍大的时候有必要考虑用 ...
- MyBatis中foreach循环的用法
一.在了解foreach之前,先了解一下mybatis传入参数及parameterType 1.我们在Dao层向对应的mapper.xml文件传递参数时,可以传递的参数有: ①.基本数据类型(如int ...
- sqlserver中的循环遍历(普通循环和游标循环)
sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student
- sqlserver中的循环遍历(普通循环和游标循环)(转载)
sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student
- 微信小程序中的循环遍历问题
比如:如果在微信小程序中要遍历输出 0-9 的数,我们会使用for循环 ;i<;i++){ console.log(i); } 确实结果也是这样: 但是,如果我在循环时同时调用wx的api接口1 ...
- php中foreach循环遍历二维数组
最近在用tp3.2框架,在查询的时候用到了select(),这条语句返回的是二维数组,所以在对返回的数据做处理时,遇到了些麻烦,百度了下foreach,终于用foreach解决了数据的筛选问题 (因为 ...
- js中for循环遍历的写法
众所周知,for循环是编程中必不可少的知识点:那么如何高效的写出循环呢? 我们要先知道for循环的基础样式是由自有变量自增自减和if判组成的: 1 for(条件){ 2 执行语句 3 } 而for循环 ...
随机推荐
- 设计模式《JAVA与模式》之命令模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述命令(Command)模式的: 命令模式属于对象的行为模式.命令模式又称为行动(Action)模式或交易(Transaction)模式. ...
- Python(28)---模块和包的基本概念
一.模块 定义:在python中,一个 .py 文件就称为一个模块 使用模块的好处:最大的好处就是提高了代码的可维护性 分类(三种): python标准库 第三方模块 应用程序自定义模块 模块导入方法 ...
- centos7 完整配置openvpn详情教程
1. 什么是OpenVpn OpenVPN 是一个用于创建虚拟专用网络加密通道的软件包,最早是由James Yonan编写的.OpenVPN允许创建的VPN使用公开密钥.电子证书.或者用户名/密码来进 ...
- django-suit报错解决-----from suit.apps import DjangoSuitConfig
(py27) [root@test SimpletourDevops]# python manage.py makemigrationsTraceback (most recent call last ...
- How To Scan QRCode For UWP (4)
QR Code的全称是Quick Response Code,中文翻译为快速响应矩阵图码,有关它的简介可以查看维基百科. 我准备使用ZXing.Net来实现扫描二维码的功能,ZXing.Net在Cod ...
- PHP:使用Zend对源码加密、Zend Guard安装以及Zend Guard Run-time support missing的解决方法
Zend Guard是目前市面上最成熟的PHP源码加密产品了.刚好需要对自己的产品进行加密,折腾了一晚上,终于搞定,将碰到的问题及解决方法记录下来,方便日后需要,也可以帮助其他人.我使用的是Wamps ...
- redis的高级事务CAS(乐观锁)
Optimistic locking using check-and-set(乐观锁) 乐观锁介绍:watch指令在redis事物中提供了CAS的行为.为了检测被watch的keys在是否有多个cli ...
- Nginx 配置 Location 规则优先级问题
nginx 的 location与配置中 location 顺序没有关系,与 location 表达式的类型有关.相同类型的表达式,字符串长的会优先匹配. 以下是按优先级排列说明: 等号类型(=)的优 ...
- ASP.NET Core 1.0 中 EntityFramework 与 PostgreSQL 的使用
https://docs.efproject.net/en/latest/providers/npgsql/index.html 前面在CentOS6.7环境下配置好了PostgreSQL, 就顺便试 ...
- ASP.NET Core 与 .NET Core 演变与基础概述
https://github.com/dotnet/corehttps://github.com/aspnet/home 今天看到 .NET Core 的改名计划,感觉跨平台的时代快要来了,从之前的 ...