欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mybatis的多条件查询

程序员文章站 2022-03-11 21:42:31
...

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

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