gpt4 book ai didi

java - 将多个和多种类型的参数传递给 iBATIS

转载 作者:行者123 更新时间:2023-12-01 12:36:48 26 4
gpt4 key购买 nike

我现在的处境很复杂。我需要向 iBATIS select 传递三个参数,其中 2 个是 String ,1 个是 List

列表看起来像:

List<User> userList=new List<User>();

public class User
{
private String name;
private String location;
//and other fields and setter/getter
}

查询将如下所示:

Select * FROM myTable Where 
fromDate>= 'date1' and toDate<='date2' and name In ('nm1','nm2','nm3',......) and
location in('loc1','loc1','loc1',.....);

我的进展:

我尝试过分离查询

第 1 部分(使用 Map 传递多个参数):

Select * FROM myTable Where 
fromDate>= 'date1' and toDate<='date2'

map :

Map<String,String> paramMap=new HashMap<String, String>();
paramMap.put("fromDate", fromDate);
paramMap.put("toDate", toDate);

iBATIS 查询:

<select id="" parameterClass="map" resultMap="">
Select * FROM myTable Where fromDate>= #fromDate# and toDate<=#toDate#
</select>

第 2 部分(只有一个部分名称/位置。传递列表并迭代它):

Select * FROM myTable Where 
name In ('nm1','nm2','nm3,......)

我的列表(只是一个字符串列表):

List<String> nameList=new ArrayList<String>();
nameList.add("nm1");
nameList.add("nm2");
nameList.add("nm3");

iBATIS 查询:

<select id="" parameterClass="list" resultMap="">
SELECT * from myTable WHERE name IN
<iterate open="(" close=")" conjunction="," >
#[]#
</iterate>

这些都可以。

我需要将这三个参数fromDatetoDateuserList传递给iBATIS并访问它们构建一个与我提到的第一个查询类似的查询。

首先这可能吗?如果是,那么即使是一点提示(技术/过程/链接)也会拯救我。

如果没有,那么我们将不胜感激一些其他建议

请仅考虑 iBATIS 而不是 MyBatis

最佳答案

我仍然找不到使用 ListMap 直接传递参数的方法。但我通过方式得到了我想要的:

我添加了另一个类Inof,它将把参数传递给iBATIS。

Public Class Inof
{
private String fromDate;
private String fromDate;
private List<User> list;

}

<select id="" parameterClass="myPackage.Inof" resultMap="">
SELECT * from myTable WHERE fromDate>= #fromDate# and toDate<=#toDate# and name IN
<iterate open="(" close=")" conjunction="," property="list" >
#list[].name#
</iterate>
and location IN
<iterate open="(" close=")" conjunction="," property="list" >
#list[].location#
</iterate>
</select>

这给了我我想要的,但我并不完全满意。如果还有其他好的做法或有效的方法,请分享。

关于java - 将多个和多种类型的参数传递给 iBATIS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25505630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com