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中,然后再以参数形式传入。
上一篇: 【LeetCode】344. 反转字符串
下一篇: 链表
推荐阅读
-
mybatis 模糊查询的实现方法
-
select-mysql 嵌套查询,一个表的多个字段 作为另一个表的条件,求高手
-
多个查询条件的sql语句的拼写技巧,求指点。
-
mysql数据库不能识别中文的查询条件。_MySQL
-
09.数据的条件查询操作
-
Mybatis动态sql、if与where的使用、sql片段、foreach遍历、Mybatis的关联查询一对一、一对多、多对多、Mybatis的延时加载
-
使用准则进行条件查询--1.4.从窗体中选择查询的条件
-
mysql进阶(五)数据表中带OR的多条件查询
-
mysql-怎么查询主表的外键值、mybatis代码怎么写
-
MyBatis Generator Example.Criteria 查询条件复制