查看详情


1、编写接口方法
BrandMapper接口
这里需要注意的是Brand selectById(int id);这里的id并没有与BrandMapper.xml的select方法里的id相对应,select id="selectById"的含义是这段select对应的是BrandMapper接口里的selectById方法,而这里的#{id}则不同。这也是后面多条件查询需要关注的问题。

2、编写sql映射 BrandMapper.xml参数占位符:
1、# {}:会将其替换为?,为了放在sql注入
2、$ {}:拼入sql,会参在sql注入的问题
传参的时候一定要选择#
表名或列名不固定的情况下才使用$

参数类型:parameterType:可以省略,因为在brandmapper接口里面的抽象方法就已经定义的参数类型了

特殊字符处理:
有时候我们要选择的是id小于或者大于多少的,但是在xml的语法中<是开始、>是结束,所以直接这样使用会报错解决方案:
1、转义字符

2、CDATA区
tip:输入CD自动补齐CDATA区

条件查询

多条件查询

①散装参数:如果方法中有多个参数,需要使用@Param(“SQL参数占位符名称”)
1、编写接口方法

//    多条件查询
//散装参数List<Brand> selectByCondition(@Param("status") int status,@Param("companyName") String companyName,@Param("brandName") String brandName);

2、编写BrandMapper.xml

3、执行test

@Testpublic void testSelectByCondition() throws IOException {//        接收参数int status = 1;String companyName = "华为";String brandName = "华为";
//        为模糊匹配like处理参数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、执行方法List<Brand> brands = brandMapper.selectByCondition(status,companyName,brandName);System.out.println(brands);//释放资源sqlSession.close();}

②封装对象作为参数
1、BrandMapper接口

2、BrandMapper.xml不改动

这里直接将接收到的brand对象的status,company、brandname属性给与对应的参数名上。

3、test修改

@Testpublic void testSelectByCondition() 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、获取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、执行方法List<Brand> brands = brandMapper.selectByCondition(brand);System.out.println(brands);//释放资源sqlSession.close();}

将用户传来的参数封装为brand对象,再由brand对象传给sql语句,sql语句进行拆分后分别赋给同属性名的参数。

查询成功:

③map集合方法
1、brandMapper接口

List<Brand> selectByCondition(Map map);

2、BrandMapper.xml的sql语句不改动

3、test修改
保证map中的键的名称和sql语句中需要的参数名称一一对应。

@Testpublic void testSelectByCondition() throws IOException {//        接收参数int status = 1;String companyName = "华为";String brandName = "华为";
//        为模糊匹配like处理参数companyName = "%" + companyName + "%";brandName = "%" + brandName + "%";//封装对象Map map = new HashMap();map.put("status",status);map.put("companyName",companyName);map.put("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、执行方法List<Brand> brands = brandMapper.selectByCondition(map);System.out.println(brands);//释放资源sqlSession.close();}

这个方法其实就和封装对象类似,不过这里是封装为了map对象。
总结:

JAVA Web学习笔记15 mybatis之查看详情 条件查询相关推荐

  1. java web学习笔记(持续更新)

    java web学习笔记 一.Java Web简介 二.认识Servlet 1.什么是Servlet? 2.请求路径 3.tomcat 4.Servlet的使用 三.Servlet简单应用 1.创建S ...

  2. 2019年Java Web学习笔记目录

    Java Web学习笔记目录 1.Java Web学习笔记01:动态网站初体验 2.Java Web学习笔记02:在Intellij里创建Web项目 3.Java Web学习笔记03:JSP元素 4. ...

  3. [原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)...

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  4. [原创]java WEB学习笔记58:Struts2学习之路---Result 详解 type属性,通配符映射

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. 1、JAVA web学习笔记

    以下内容是在学习某机构视频过程中记录的笔记,不准确的地方请大家评论指正. JavaWeb是使用Java语言开发基于互联网的项目. 资源分类有两类: 静态资源: 使用静态网页开发技术发布的资源. 特点: ...

  6. [原创]java WEB学习笔记86:Hibernate学习之路-- -映射 n-n 关系,单向n-n,双向n-n

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. java web学习笔记-jsp篇

    转载自:http://www.cnblogs.com/happyfans/archive/2015/03/17/4343571.html 1.java web简介 1.1静态页面与动态页面   表现形 ...

  8. [原创]java WEB学习笔记02:javaWeb开发的目录结构

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. [原创]java WEB学习笔记36:Java Bean 概述,及在JSP 中的使用,原理

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

最新文章

  1. 互联网协议 — TLS 传输层安全协议
  2. 利用Aspose.Word控件实现Word文档的操作
  3. static和extern的用法总结
  4. 小顶堆数据结构C/C++代码实现
  5. maven中ssm框架快速搭建
  6. JSON在android中应用
  7. 手把手教你设计交友网站【3】
  8. mysql导入的sql文件导入到哪里了_mysql导入导出sql文件
  9. [渝粤教育] 西南科技大学 国际贸易理论与实务 在线考试复习资料2021版(1)
  10. yolov3视频检测图像上显示准确率
  11. map转json字符串字段排序
  12. 海康威视录像机(DS-8632N-E8)开机卡LOGO
  13. android 死亡阴影,英雄无敌3死亡阴影
  14. CentOS 9 镜像下载
  15. 混合移动应用中地图导航功能开发与应用
  16. 欧拉恒等式:数学史上的真正完美公式!
  17. PTA 顺序表的基本操作
  18. 高层建筑的定义及分类
  19. 饭店点餐系统之数据库表结构
  20. uniapp本地数据库_Uniapp教程|App/uni-app离线本地存储方案

热门文章

  1. robomongo超时
  2. golang---go mod 相关问题的解决方法(Unexpected module path、used for two different module)
  3. 关于“Android Studio and Gradle are using different locations for the JDK.”提示的解决方法
  4. GBU610-ASEMI智能家居整流桥GBU610
  5. android10 psp模拟器,ppsspp模拟器安卓版
  6. PostgreSQL中使用的SQL语法
  7. requests出现InsecureRequestWarning解决
  8. Python 嵌套函数
  9. 二个数据库之间怎么同步
  10. MATLAB绘制柱状图