安徽网站关键词优化排名地区网站建设
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:02
当前位置: 首页 > news >正文
安徽网站关键词优化排名,地区网站建设,最新新闻热点国家大事,微信引流的十个方法Mybatis基础环境准备请看#xff1a;Mybatis基础环境准备 本篇讲解Mybati数据CRUD数据操作之多条件查询
1#xff0c;编写接口方法
在 com.itheima.mapper 包写创建名为 BrandMapper 的接口。在 BrandMapper 接口中定义多条件查询的方法。
而该功能有三个参数#xff0c;…Mybatis基础环境准备请看Mybatis基础环境准备 本篇讲解Mybati数据CRUD数据操作之多条件查询
1编写接口方法
在 com.itheima.mapper 包写创建名为 BrandMapper 的接口。在 BrandMapper 接口中定义多条件查询的方法。
而该功能有三个参数我们就需要考虑定义接口时参数应该如何定义。Mybatis针对多参数有多种实现 使用 Param(参数名称) 标记每一个参数在映射配置文件中就需要使用 #{参数名称} 进行占位 ListBrand selectByCondition1(Param(status) int status, Param(companyName) String companyName,Param(brandName) String brandName);将多个参数封装成一个 实体对象 将该实体对象作为接口的方法参数。该方式要求在映射配置文件的SQL中使用 #{内容} 时里面的内容必须和实体类属性名保持一致。 ListBrand selectByCondition2(Brand brand);将多个参数封装到map集合中将map集合作为接口的方法参数。该方式要求在映射配置文件的SQL中使用 #{内容} 时里面的内容必须和map集合中键的名称一致。 ListBrand selectByCondition3(Map map);即在接口中定义接口如下3种形式 ListBrand selectByCondition1(Param(status) int status, Param(companyName) String companyName, Param(brandName) String brandName);ListBrand selectByCondition2(Brand brand);ListBrand selectByCondition3(Map map);2编写SQL语句
在 reources 下创建 com/itheima/mapper 目录结构并在该目录下创建名为 BrandMapper.xml 的映射配置文件
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecom.itheima.mapper.BrandMapperresultMap idbrandResultMap typebrand!–id完成主键字段的映射column表的列名property实体类的属性名result完成一般字段的映射column表的列名property实体类的属性名–result columnbrand_name propertybrandName/result columncompany_name propertycompanyName//resultMapselect idselectByCondition1 resultMapbrandResultMapselect *from tb_brandwhere status #{status}and company_name like #{companyName}and brand_name like #{brandName}/selectselect idselectByCondition2 resultMapbrandResultMapselect *from tb_brandwhere status #{status}and company_name like #{companyName}and brand_name like #{brandName}/selectselect idselectByCondition3 resultMapbrandResultMapselect *from tb_brandwhere status #{status}and company_name like #{companyName}and brand_name like #{brandName}/select
/mapper3编写测试方法
在 test/java 下的 com.itheima.mapper 包下的 MybatisTest类中 定义测试方法
三种实现方式分别对应上述三种接口写法。
Test
public void testSelectByCondition() throws IOException {//接收参数int status 1;String companyName 华为;String brandName 华为;// 处理参数companyName % companyName %;brandName % brandName %;//1. 获取SqlSessionFactoryString 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. 执行方法//方式一 接口方法参数使用 Param 方式调用的方法// 对应接口ListBrand selectByCondition1(Param(status) int status, Param(companyName) String companyName,Param(brandName) String brandName);ListBrand brands1 brandMapper.selectByCondition1(status, companyName, brandName);System.out.println(brands1);//方式二 接口方法参数是 实体类对象 方式调用的方法// 对应接口ListBrand selectByCondition2(Brand brand);//封装对象Brand brand new Brand();brand.setStatus(status);brand.setCompanyName(companyName);brand.setBrandName(brandName);ListBrand brands2 brandMapper.selectByCondition2(brand);System.out.println(brands2);//方式三 接口方法参数是 map集合对象 方式调用的方法// 对应接口ListBrand selectByCondition3(Map map);Map map new HashMap();map.put(status , status);map.put(companyName, companyName);map.put(brandName , brandName);ListBrand brands3 brandMapper.selectByCondition3(map);System.out.println(brands3);//5. 释放资源sqlSession.close();
}执行测试方法结果如下
结果与数据库里信息一致3种方式都可以得到相同的结果。
4动态SQL
上述功能实现存在很大的问题, 用户在输入条件时肯定不会所有的条件都填写,如果写死sql
select *from tb_brandwhere status #{status}and company_name like #{companyName}and brand_name like #{brandName}那么肯定会报错比如status字段没有则语法报错。 这就需要我们根据实际去动态生成SQL语句。 Mybatis对动态SQL有很强大的支撑 if choose (when, otherwise) trim (where, set) foreach if 标签条件判断 test 属性逻辑表达式如果为是则 if标签保留否则if标签内容不保留 where 标签 作用 替换where关键字会动态的去掉第一个条件前的 and如果所有的参数没有值则不加where关键字 注意需要给每个条件前都加上 and 关键字。 动态sql示例
sql配置编写
select idselectByCondition resultMapbrandResultMapselect *from tb_brandwhereif teststatus ! nulland status #{status}/ifif testcompanyName ! null and companyName ! and company_name like #{companyName}/ifif testbrandName ! null and brandName ! and brand_name like #{brandName}/if/where/select测试类里 Map map2 new HashMap();//map2.put(status , status);map2.put(companyName, companyName);map2.put(brandName , brandName);ListBrand brands brandMapper.selectByCondition(map2);System.out.println(brands);运行结果 可以看到SQL语句动态生成了结果正确
[声明]内容主要来源黑马程序员网上资源学习
- 上一篇: 安徽网站备案要多少时间ps抠图教程
- 下一篇: 安徽网站建设服务怎么做微信小说网站
相关文章
-
安徽网站备案要多少时间ps抠图教程
安徽网站备案要多少时间ps抠图教程
- 技术栈
- 2026年03月21日
-
安徽网站seo网站建设好后怎样形成app
安徽网站seo网站建设好后怎样形成app
- 技术栈
- 2026年03月21日
-
安徽省住房建设厅网站旅行网站建设论文摘要
安徽省住房建设厅网站旅行网站建设论文摘要
- 技术栈
- 2026年03月21日
-
安徽网站建设服务怎么做微信小说网站
安徽网站建设服务怎么做微信小说网站
- 技术栈
- 2026年03月21日
-
安徽网站建设科技wordpress数据库表
安徽网站建设科技wordpress数据库表
- 技术栈
- 2026年03月21日
-
安徽网站建设论坛烟台外贸网站建设公司
安徽网站建设论坛烟台外贸网站建设公司
- 技术栈
- 2026年03月21日






