怎么获得Map<String,Date>中 String或Date类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么获得Map<String,Date>中 String或Date类型相关的知识,希望对你有一定的参考价值。
众所周知,mybatis的传入参数可以是各种Java的基本数据类型:包含int,String,Date等。基本数据类型作为传参,只能传入一个。通过#参数名 即可获取传入的值 ,复杂数据类型:包含JAVA实体类、Map。通过#属性名或#map的KeyName即可获取传入的值,但是如果想传入一个collection怎么办呢?经查找后发现可以使用mapper配置文件中的foreach语句,借用别人写的文章:
3.7 foreach
对于动态SQL 非常必须的,主是要迭代一个集合,通常是用于IN 条件。List 实例将使用“list”做为键,数组实例以“array” 做为键。
foreach元素是非常强大的,它允许你指定一个集合,声明集合项和索引变量,它们可以用在元素体内。它也允许你指定开放和关闭的字符串,在迭代之间放置分隔符。这个元素是很智能的,它不会偶然地附加多余的分隔符。
注意:你可以传递一个List实例或者数组作为参数对象传给MyBatis。当你这么做的时候,MyBatis会自动将它包装在一个Map中,用名称在作为键。List实例将会以“list”作为键,而数组实例将会以“array”作为键。
这个部分是对关于XML配置文件和XML映射文件的而讨论的。下一部分将详细讨论Java API,所以你可以得到你已经创建的最有效的映射。
3.7.1参数为array示例的写法略3.7.2参数为list示例的写法
接口的方法声明:
Java代码
public List getStudentListByClassIds_foreach_list(List classIdList);
动态SQL语句:
Xml代码
<!-- 7.2 foreach(循环List参数) - 作为where中in的条件 -->
SELECT ST.STUDENT_ID,
ST.STUDENT_NAME,
ST.STUDENT_SEX,
ST.STUDENT_BIRTHDAY,
ST.STUDENT_PHOTO,
ST.CLASS_ID,
ST.PLACE_ID
FROM STUDENT_TBL ST
WHERE ST.CLASS_ID IN
#classIdList
测试代码,查询学生中,在20000001、20000002这两个班级的学生:
Java代码
@Test
public void test7_2_foreach()
ArrayList classIdList = new ArrayList();
classIdList.add("20000001");
classIdList.add("20000002");
List list = this.dynamicSqlMapper.getStudentListByClassIds_foreach_list(classIdList);
for (StudentEntity e : list)
System.out.println(e.toString());
这个是ItEye上的一篇文章,其中配置文件中的parameterType是可以不配置的,mybatis会自动传入的。当您想传入collection时,并不能直接传入collection对象,要将其先转换为list,然后才能传入。因为mybatis生成SQL语句遍历list时是需要用到get()方法的,而这个方法只在List中才有,Collection里是没有的。以上的配置在Mybitis官方文档中的“动态SQL”也可以找到。
参数示例:
根据班级ID查询教师列表
xml文件
[html] view plaincopy
select * from Teacher where c_id=#id
java代码
[java] view plaincopy
List tList = teacherMapper.selectTeacher(2);
for (Teacher entityTemp : tList)
System.out.println(entityTemp.toString());
JAVA实体类型参数示例:
[html] view plaincopy
select * from Teacher where c_id=#id
[java] view plaincopy
java代码
Teacher queryTeacher=new Teacher();
queryTeacher.setId(2);
List tList = teacherMapper.selectTeacher(queryTeacher);
for (Teacher entityTemp : tList)
System.out.println(entityTemp.toString());
Map参数示例:
[html] view plaincopy
select * from Teacher where c_id=#id and sex=#sex
[java] view plaincopy
java代码
Map map=new HasMap();
map.put("id","2");
map.put("sex","男");
List tList = teacherMapper.selectTeacher(map);
for (Teacher entityTemp : tList)
System.out.println(entityTemp.toString());
另外MyBatis还提供了一个使用注解来参入多个参数的方式。这种方式需要在接口的参数上添加@Param注解
示例:
接口方法
[java] view plaincopy
public List selectTeacher(@Param(value="id") String id,@Param(value="sex") String sex);
XML文件
[html] view plaincopy
select * from Teacher where c_id=#id and sex=#sex
测试代码
[java] view plaincopy
List tList = teacherMapper.selectTeacher("2","男");
for (Teacher entityTemp : tList)
System.out.println(entityTemp.toString());
// 注意此处可以是任何集合类,不限于列表 参考技术A Map 采取的是key-value的结构存储数据的。因此它是通过key来寻找vlaue。并且key是唯一的。
这里比如:
Map.put("9547","张三");Map.put("9548","李四");Map.put("9549","王五");
取得时候根据map.get("编号")--》得到人物数据的、
同理回到问题:Map<String,Date> map=new HashMap<String,Date>();
map.put("2017-09-28",new Date());
Date date=map.get("String");//即可获取。
Map<String,String> 怎么使用呢
Map<String,String> 怎么使用呢 在下没有用过 请高手指点指点
<String, String> 是泛型的意思,表示你插入Map的key 和 value 都必须是String类型。使用方法:
Map<String, String> m = new HashMap<String, String>();
m.put("name", "xiaoming"); 参考技术A 我也给你一个例子
import java.util.Map;
public class EnvMap
public static void main (String[] args)
Map<String, String> env = System.getenv();
for (String envName : env.keySet())
System.out.format("%s=%s%n", envName, env.get(envName));
这个例子与楼上的互补,可以得到map里的键-值对并打印本回答被提问者采纳
以上是关于怎么获得Map<String,Date>中 String或Date类型的主要内容,如果未能解决你的问题,请参考以下文章
map怎么转成list<map<string,object>>