java foreach参数_java – Mybatis foreach迭代复杂对象参数中的整数列表
我在Play Framework 2.3.6
Java项目中使用MyBatis 3.2.8.我已经挣扎了几天,迭代遍历复杂对象参数中的MyBatis映射器的整数列表.这是我的设置:
我在EventFilter.java中有一个名为EventFilter的类:
public class EventFilter {
private String beginDate;
private String endDate;
private List closestCountry;
private List territorialWaterStatus;
private List vesselCountry;
private String closestCountryInClause;
private String territorialWaterStatusInClause;
private String vesselCountryInClause;
public EventFilter() { }
public EventFilter(JsonNode jsonNode){
this.beginDate = jsonNode.get("beginDate").asText();
this.endDate = jsonNode.get("endDate").asText();
this.closestCountry = JsonHelper.arrayNodeToIntegerList((ArrayNode) jsonNode.get("closestCountry"));
this.territorialWaterStatus = JsonHelper.arrayNodeToIntegerList((ArrayNode) jsonNode.get("territorialWaterStatus"));
this.vesselCountry = JsonHelper.arrayNodeToIntegerList((ArrayNode) jsonNode.get("vesselCountry"));
}
public String getBeginDate() {
return beginDate;
}
public void setBeginDate(String beginDate) {
this.beginDate = beginDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
public List getTerritorialWaterStatus() {
if(this.territorialWaterStatus.size() > 0) {
return territorialWaterStatus;
} else {
return null;
}
}
public void setTerritorialWaterStatus(List territorialWaterStatus) {
this.territorialWaterStatus = territorialWaterStatus;
}
public List getClosestCountry() {
if(this.closestCountry.size() > 0) {
return closestCountry;
} else {
return null;
}
}
public void setClosestCountry(List closestCountry) {
this.closestCountry = closestCountry;
}
public List getVesselCountry() {
if(this.vesselCountry.size() > 0) {
return vesselCountry;
} else {
return null;
}
}
public void setVesselCountry(List vesselCountry) {
this.vesselCountry = vesselCountry;
}
}
这在我的mybatis配置文件中被引用为类型别名:
我有一个mapper,它以EventFilter对象作为参数.然后应检查是否设置了beginDate,endDate,nearestCountry,vesselCountry和territorialWaterStatus.如果是,它将它们用于WHERE子句:
SELECT ev.id, to_char(ev.occurred_on, 'YYYY-MM-DD') AS occurred_on_date,
to_char(ev.occurred_on, 'HH24:MI:SS') AS occurred_on_time,
ST_X(ev.location) AS longitude, ST_Y(ev.location) AS latitude,
COALESCE(co01.name, 'Unspecified') AS closest_country,
COALESCE(co02.name, 'Unspecified') AS territorial_water_status,
COALESCE(co03.name, 'Unspecified') AS vessel_flag_country
FROM event AS ev
LEFT JOIN country AS co01
ON co01.cow_id = ev.location_closest_country_id
LEFT JOIN country AS co02
ON co02.cow_id = ev.location_water_status_country_id
LEFT JOIN country AS co03
ON co03.cow_id = ev.vessel_flag_country_id
ev.occurred_on >= #{eventFilter.beginDate}::timestamp AND ev.occurred_on <= #{eventFilter.endDate}::timestamp
AND ev.location_closest_country_id IN
#{id}
AND ev.location_water_status_country_id IN
#{id}
AND ev.vessel_flag_country_id IN
#{id}
ORDER BY ev.occurred_on ASC;
我将映射器链接到一个接口,如下所示:
public List getEventsWithFilter(@Param("eventFilter") EventFilter eventFilter);
我用MybatisMapper辅助类调用它来生成我的会话,如下所示:
public static List getEvents(EventFilter eventFilter) {
MybatisMapper mapper = new MybatisMapper();
SqlSession session = mapper.getSession();
EventMapper eventMapper = session.getMapper(EventMapper.class);
List events;
List li = eventFilter.getClosestCountry();
try {
events = eventMapper.getEventsWithFilter(eventFilter);
} finally {
session.close();
}
return events;
}
问题:
beginDate和endDate自己完全正常工作.但是我对整数列表有以下问题:
>检查列表是否为null的if语句似乎正在获取
忽略,或当它应该是假时评估为true.
>整数列表似乎作为null传递给IN子句.
>如果我注释掉整数列表IN子句,并且只是为了beginDate和
endDate,它完全正常.但是,如果我留下整数
列表IN子句,查询不会失败,但它返回一个空
设置,好像要说“WHERE列IN()”.
这是执行映射器/查询时由Play和Mybatis打印的控制台日志记录,以及EventFilter打印其内容.它们有点冗长所以我把它们放在pastebin中:
这比我想要的要长一点,但提前感谢任何帮助或建议.
java foreach参数_java – Mybatis foreach迭代复杂对象参数中的整数列表相关推荐
- Java 反射将配置文件数据加载到对象属性中
Java 反射将配置文件数据加载到对象属性中 Java 反射 可以根据类名找到相应的类,也可以将配置文件中的值加载到对应属性中. 需要用到的包:spring-core-3.1.2.Release.ja ...
- java form action 参数_java发起form请求(有参数,无参数)
1.无参请求 /** * 无参数请求 * @param url * @return */ public static String sendNoPara(String url){ try { Post ...
- java hashtable 遍历_Java HashTable forEach()用法及代码示例
Hashtable类的forEach(BiConsumer)方法对哈希表的每个条目执行BiConsumer操作,直到已处理完所有条目或该操作引发异常. BiConsumer操作是按迭代顺序执行的哈希表 ...
- java发送文件_java 模拟http发送文件和参数
一.maven: org.apache.httpcomponents httpmime 4.5.3 二.工具类: import java.io.File; import java.util.Map; ...
- java 设置系统参数_Java如何设置系统参数和运行参数
系统参数 系统级全局变量,该参数在程序中任何位置都可以访问到.优先级最高,覆盖程序中同名配置. 系统参数的标准格式为:-Dargname=argvalue,多个参数之间用空格隔开,如果参数值中间有空格 ...
- java httpget 设置参数_java 模拟HTTP doPost请求 设置参数 | 学步园
请求模拟 package org.zlex.commons.net; import java.io.DataInputStream; import java.io.DataOutputStream; ...
- java jersey 参数_Java Jersey:接收表单参数作为字节数组
我试过如下: @Path("/someMethod") @POST @Produces(MediaType.TEXT_HTML) @Consumes(MediaType.APPLI ...
- java后台接收参数_java 后台如何 接收 uploader UploadFileOptions 参数
Uploader Example // 扩展API加载完毕后调用onPlusReady回调函数 document.addEventListener( "plusready", on ...
- java scanner构造函数_Java使用Scanner作为构造函数的参数
这是一个学校作业的问题,这就是我这样做的原因. 无论如何,我在主方法中使用Stdin制作扫描仪(Scanner stdin = new Scanner(System.in);是行),从程序运行时指定的 ...
最新文章
- unity发布webgl 触摸控制和鼠标控制冲突问题解决
- android发短信乱码,android 音乐信息乱码处理
- 人生苦短,我学python之python+selenium select下拉框
- word删除分节符后之前的格式乱了_分页符分节符,你知道多少
- 共享单车变“私有”、被毁、被盗:用户们都看不下去了,举报!
- PyTorch 深度学习:37分钟快速入门——FCN 做语义分割
- codeforce #164 div2
- [转载] 这100道练习,带你玩转Numpy
- Excel 导入 SqlServer 导入部分文本为空解决方案
- 10个妙招 在线视频下载方法大全
- 【Excel 教程系列第 1 篇】删除所有空白行,隐藏空白行
- 打通法律服务群众“最后一公里”,方正璞华劳动人事法律自助咨询服务平台频获“点赞”
- Golang 如何限制木马图片上传服务器
- SAP中输出采购订单附件清单操作实例
- 【100%通过率】华为OD机试真题 Python 实现【核酸最快检测效率】【2022.11 Q4 新题】
- jsp高校活动管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目
- html5 自动扣图,html5利用canvas实现颜色容差抠图功能
- 天地图 添加遮罩层效果
- elk面试题_2019年最新公务员、事业单位面试题库(含答案)elk
- 【怀旧】 “AutoCAD 经典”界面
热门文章
- Android每日一记
- Ubuntu18 安装yum
- Java selenium和python_c#和Java和python设置selenium超时时间
- 路遥《平凡的世界》孙少平原型人物
- php判断是否存在http,php获取http-header来判断文件是否存在
- 关于计算机工作的诗歌,提高计算机工作及上网效率的方法
- Node组件——Express简介
- PyQt5学习--基本窗口控件--加载文件-QFileDialog
- try catch异常后会执行后面的代码吗_Java的异常体系
- Linux Tun/Tap网口(/dev/net/tun)的读写方法