多条件动态查询

问题:用户在进行查询的时候,可能有的选项并没有填,如果直接进行查询的话是查不出来的,所以这里需要进行改进。
在这里插入图片描述BrandMapper.xml
在这里插入图片描述
if:条件判断
test:逻辑表达式

问题1:如果同时没有了status和brandName,会报错:
在这里插入图片描述原因是这里多了一个and
解决方案:多加一个恒等式,然后全体加and在这里插入图片描述
但其实mybatis已经有了非常完美的解决方案——使用< where >标签,替换where关键字。

单条件动态查询

在这里插入图片描述
在这里插入图片描述

@Test
    public void testSelectByConditionSingle() throws IOException {
//        接收参数
        int status = 1;
        String companyName = "华为";
        String brandName = "华为";
//        为模糊匹配like处理参数
        companyName = "%" + companyName + "%";
        brandName = "%" + brandName + "%";

        //封装对象
        Brand brand = new Brand();
//        brand.setBrandName(brandName);
//        brand.setCompanyName(companyName);
//        brand.setStatus(status);



        //1、获取sqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2、获取sqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3、获取Mapper接口的代理对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
        //4、执行方法
        List<Brand> brands = brandMapper.selectByConditionSingle(brand);
        System.out.println(brands);

        //释放资源
        sqlSession.close();
    }
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐