MyBatis-XXMapper.xml的参数设置

XXMapper.xml的参数设置

  • 一、parameterType(输入参数类型)
  • 二、使用Map作为参数类型
    • 1、使用Map作为输入参数类型
    • 2、使用Map作为输出结果参数类型
  • 三、resultMap

一、parameterType(输入参数类型)

  • 当传入的参数类是 String 时,也可以使用 ${} 来接收参数
SELECT * FROM monster WHERE id=#{id} OR name=#{name}
  • 当使用模糊查询的时,需要 ${value} 来取值(容易出错的地方)
    • like ‘value%’ :将搜索以字母value开头的所有字符串,like ‘%value’ 将搜索以字母value 结尾的所有字符串,like ‘%value%’ 将搜索在任何位置包含字母 value 的所有字符串。
SELECT * FROM monster WHERE name LIKE '%${value}%'

二、使用Map作为参数类型

1、使用Map作为输入参数类型

映射的类型Map,对应别名map。

	

2、使用Map作为输出结果参数类型

List> 作为resultType,resultType=“map”。这儿的返回结果类型是按照List<>中的类型来确定的,而不是List。
获取Map的结果时,依然有三种方法:

  • 直接输出map,得到key=value的输出;
	System.out.println(monsterMap);
  • 先获取entry,再输出entry.getKey()=entry.getValue();
	for(Map.Entry entry:monsterMap.entrySet()){
		System.out.println(entry.getKey()+"==>"+entry.getValue());
	 }
  • 获取keySet,再获得map.get(key)。
	Set keySet = monsterMap.keySet();
		for (String key:keySet){
			System.out.println(key+"=>"+monsterMap.get(key));
	}

三、resultMap

用于DB属性名,与JavaBean属性名不一致的,建立对应的映射使用。

  • 情景1:insert语句,在DB中插入一个User,但两边名称不一致。因为是插入,没有返回值,不需使用resultMap
insert into USER(user_name,user_email) value(#{userName},#{userEmail})
其中,User()括号里面的属性名是按DB的,value()括号中的属性名是按JavaBean的,以此区分。
  • 情景2:select语句,返回一个JavaBean,类属性和表字段名称不一致。

解决方法1:resultMap


	
	

下面resultMap指向了要使用哪个resultMap的id


解决方法2:使用表别名。不推荐:复用性差。

	SELECT user_name as username,user_email as useremail FROM user

你可能感兴趣的:(框架之MyBatis,xml,mybatis,java)