mybatis的多条件查询

本文介绍了使用MyBatis进行多条件查询的两种方法:通过@Param注解指定参数名称和使用HashMap传递参数。详细展示了如何在接口和Mapper文件中定义查询逻辑,并提供了测试示例。

多条件查询有好几种方式,这里主要介绍两种

使用@Param来指定

使用HashMap来传参

使用@Param:

接口:

public List<Emp> findEmpByMultiParams(@Param("lastName")String lastName,
	@Param("salary") double salary);

mapper文件:

这里要注意,{}中的字符串一定要跟@Param中的字符串一样

  <select id="findEmpByMultiParams" resultType="emp" >
  	<![CDATA[
  		select * from emp where last_name like #{lastName} and salary < #{salary}
  	]]>
  </select>

test:

	public void testMultiParams(){
		EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
		List<Emp> list = mapper.findEmpByMultiParams("%A%", 1200);
		System.out.println(list);
	}

使用HashMap来传参

接口:

public List<Emp> findEmpByMap(Map<String,Object> map);

mapper文件:

  <select id="findEmpByMap" resultType="emp" parameterType="map">
  		<![CDATA[
  		select * from ${tb} where last_name like #{lastName} and salary < #{salary}
  		order by ${sal} ${desc}
  	]]>
  </select>

test:

map中的key必须等于{}里面的字符串

	public void testMap(){
		EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("lastName", "%A%");
		map.put("salary", 1200);
		map.put("tb", "emp");
		map.put("sal", "salary");
		map.put("desc", "desc");
		List<Emp> list = mapper.findEmpByMap(map);
		System.out.println(list);
	}

使用多参数的时候,mybatis会自动将多参数封装成HashMap,{}中写入key就可以获取对应的值,如果key没有指定的话,就是按照顺序的param1,param2一直排序。但由于我们需要做到见名知意,所以大可先将值按照相应的名字封装到HashMap中,然后再以参数形式传入。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值