首页 > 编程学习 > MyBatis 五 ---查看详情条件查询

MyBatis 五 ---查看详情条件查询

发布时间:2022/9/4 22:23:18

查看详情

   1、编写接口方法:Mapper接口

        参数:id

        返回结果:Brand

 

 

 

    2、编写SQL语句:SQL映射文件;

      参数占位符:

          #{}:会将参数替换为?为了防止SQL注入

          ${}:会存在参数注入问题

 

 

 

    3:执行方法,测试

 

 

 条件查询:

  多条件查询:散装参数(需要使用@Param("SQL参数占位符合集"))、对象参数、Map集合的参数。

    1、编写接口方法:Mapper接口

       

 

 

 

    2、编写SQL语句:SQL映射文件;

 

 

    3:执行方法,测试

    

 @Test
    public  void test_SelectByCondition() throws IOException {

        int id = 1;
        int status =1;
        String companyName = "华为";
        String brandName = "华为";


        //处理参数
        companyName = "%"+companyName+"%";
        brandName = "%"+brandName+"%";



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


        //方法三   Map集合
        Map map = new HashMap();
        map.put("status",status);
        map.put("companyName",companyName);
        map.put("brandName",brandName);
        //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.selectByCondition(status,companyName,brandName);
//方法二           List<Brand> brands = brandMapper.selectByCondition(brand);
//方法三

        List<Brand> brands = brandMapper.selectByCondition(map);
        System.out.println(brands);
        //5 释放资源
        sqlSession.close();
    }    

 

 

 

 

 

 

 

遇到的问题:当条件查询有查询条件为中文时查询结果为空,需要在mybatis-config.xml设置编码,但是xml文件的&需要转义,最后修改的结果是这样的

<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=GMT%2B8&amp;useSSL=false"/>

被这个小问题卡了好久好久,不到一个小时。

Copyright © 2010-2022 mfbz.cn 版权所有 |关于我们| 联系方式|豫ICP备15888888号