查看详情
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&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false"/>
被这个小问题卡了好久好久,不到一个小时。
标签:status,companyName,brand,---,brandName,参数,&&,SQL,MyBatis From: https://www.cnblogs.com/zhaolei0419/p/16656328.html