MyBatis实现多条件模糊查询

使用MyBatis实现数据库表的单条件查询和多条件查询

前提:
有数据表emp如下:
MyBatis实现多条件模糊查询_第1张图片
配置文件、实体类、工具类与之前相仿,不再展示。

使用MyBatis实现单条件查询

首先在映射文件中编写SQL语句映射如下:

	
	

之后在Dao层添加与id同名的方法如下:

List findByName(String ename);

最后编写测试类测试即可:

	//根据单个条件模糊查询
	@org.junit.Test
	public void testfindByName() {
		SqlSession session = MyBatisUtils.getSqlSession();
		EmpDao ed = session.getMapper(EmpDao.class);
		List list = ed.findByName("李");
		list.forEach(System.out::println);
	}

使用MyBatis实现多条件查询

对于多条件查询,我们该怎么给Dao层的方法写参数呢?

方式一:将查询条件封装成对象进行入参

首先还是编写SQL语句映射:


	

然后在Dao层编写相应的方法:

List findByNameAndPwd(Emp emp);

最后进行测试:

	//多条件模糊查询(封装成对象入参)
	@org.junit.Test
	public void testfindByNameAndPwd() {
		SqlSession session = MyBatisUtils.getSqlSession();
		EmpDao ed = session.getMapper(EmpDao.class);
		Emp emp=new Emp();
		emp.setEname("李");
		emp.setEpwd("23");
		List list = ed.findByNameAndPwd(emp);
		list.forEach(System.out::println);
	}

方式二:使用Map对象入参

SQL语句映射如下:(与上面的SQL语句相同)

	
	
	

然后依旧是在Dao层加入响应的方法:(这次使用Map对象入参)

List findByNameAndPwd2(Map empmap);

最后测试如下:

	//多条件模糊查询2(Map对象入参)
	@org.junit.Test
	public void testfindByNameAndPwd2(){
		SqlSession session = MyBatisUtils.getSqlSession();
		EmpDao ed = session.getMapper(EmpDao.class);
		Map map=new HashMap<>();
		map.put("ename","李");
		map.put("epwd","23");
		
		List list = ed.findByNameAndPwd2(map);
		list.forEach(System.out::println);
	}

方式三:还可以使用@Param注解的方式入参

你可能感兴趣的:(MyBatis)