mybatis的多条件查询

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

使用@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中,然后再以参数形式传入。

猜你喜欢

转载自blog.csdn.net/Luke_R/article/details/78495371