Mybatis实现多条件查询

 1、在mybatis入门基础上完成后续步骤

http://t.csdnimg.cn/qbc5j

2、创建参数对象PhoneDTO

  1. 动态SQL之

    我们根据实体类的不同取值,使用不同的SQL语句来进行查询。比如在brandId如果不为空时可以根据brand_id查询,而在brandId为空时则不需要这个查询条件;如果modelNumber不同空时还要加入model_number作为条件,而在modelNumber为空时则不需要这个查询条件。

  2. 动态SQL之

    循环执行sql的拼接操作,例: SELECT * FROM phone WHERE capacity IN (128,512)

  3. 动态SQL之 : where条件

  4. 动态SQL之:sql片段抽取

3、在PhoneMapper接口中添加抽象方法selectByCondition

List selectByCondition(PhoneDTO phoneDTO);

 Mybatis实现多条件查询_第1张图片

4、在PhoneMapper.xml中添加一个select标签

Mybatis实现多条件查询_第2张图片

5、测试  

public class PhoneMapperTest {

    @Test
    public void selectByCondition() throws IOException {
        InputStream is = Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory sqLSessionFactory = new SqlSessionFactoryBuilder().build(is);
        SqlSession sqlsession = sqLSessionFactory.openSession();
        PhoneMapper phoneMapper = sqlsession.getMapper(PhoneMapper.class);
        PhoneDTO phoneDTO = new PhoneDTO();
        //动态选择条件1 品牌编号
        phoneDTO.setBrandId(1);
        //动态选择条件2 手机型号
        phoneDTO.setModelNumber("ma");
        List capacityList= new ArrayList<>();
        capacityList.add(512);
        capacityList.add(128);
        //动态选择条件3 手机容量
        phoneDTO.setCapacityList(capacityList);
        List phoneList = phoneMapper.selectByCondition(phoneDTO);
        phoneList.forEach(s-> System.out.println(s));
    }
}

如果出现这种报错

Mybatis实现多条件查询_第3张图片

 就在sqlmapConfig.xml中加上

 

Mybatis实现多条件查询_第4张图片

再次测试

Mybatis实现多条件查询_第5张图片 

 本次用到的sql语句使用了

  1. 动态SQL之

    我们根据实体类的不同取值,使用不同的SQL语句来进行查询。比如在brandId如果不为空时可以根据brand_id查询,而在brandId为空时则不需要这个查询条件;如果modelNumber不同空时还要加入model_number作为条件,而在modelNumber为空时则不需要这个查询条件。

  2. 动态SQL之

    循环执行sql的拼接操作,例: SELECT * FROM phone WHERE capacity IN (128,512)

  3. 动态SQL之 : where条件

  4. 动态SQL之:sql片段抽取

你可能感兴趣的:(java,mybatis,java)