MyBatis-XXMapper.xml的参数设置

一、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。

	<selsect id="xx" parameterType="map">

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

List<Map<String,Object>> 作为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<String> 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 type="User" id="findAllUserMap">
	<result column="user_name" property="username"/>
	<result column="user_email" property="useremail"/>
</resultMap>

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

<select id="findAllUser" resultMap="findAllUserMap" >
	SELECT * FROM user
</select>

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

	SELECT user_name as username,user_email as useremail FROM user
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值