JAVA Web学习笔记15 mybatis之查看详情 条件查询
查看详情
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之查看详情 条件查询相关推荐
- java web学习笔记(持续更新)
java web学习笔记 一.Java Web简介 二.认识Servlet 1.什么是Servlet? 2.请求路径 3.tomcat 4.Servlet的使用 三.Servlet简单应用 1.创建S ...
- 2019年Java Web学习笔记目录
Java Web学习笔记目录 1.Java Web学习笔记01:动态网站初体验 2.Java Web学习笔记02:在Intellij里创建Web项目 3.Java Web学习笔记03:JSP元素 4. ...
- [原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)...
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记58:Struts2学习之路---Result 详解 type属性,通配符映射
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 1、JAVA web学习笔记
以下内容是在学习某机构视频过程中记录的笔记,不准确的地方请大家评论指正. JavaWeb是使用Java语言开发基于互联网的项目. 资源分类有两类: 静态资源: 使用静态网页开发技术发布的资源. 特点: ...
- [原创]java WEB学习笔记86:Hibernate学习之路-- -映射 n-n 关系,单向n-n,双向n-n
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- java web学习笔记-jsp篇
转载自:http://www.cnblogs.com/happyfans/archive/2015/03/17/4343571.html 1.java web简介 1.1静态页面与动态页面 表现形 ...
- [原创]java WEB学习笔记02:javaWeb开发的目录结构
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记36:Java Bean 概述,及在JSP 中的使用,原理
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
最新文章
- 互联网协议 — TLS 传输层安全协议
- 利用Aspose.Word控件实现Word文档的操作
- static和extern的用法总结
- 小顶堆数据结构C/C++代码实现
- maven中ssm框架快速搭建
- JSON在android中应用
- 手把手教你设计交友网站【3】
- mysql导入的sql文件导入到哪里了_mysql导入导出sql文件
- [渝粤教育] 西南科技大学 国际贸易理论与实务 在线考试复习资料2021版(1)
- yolov3视频检测图像上显示准确率
- map转json字符串字段排序
- 海康威视录像机(DS-8632N-E8)开机卡LOGO
- android 死亡阴影,英雄无敌3死亡阴影
- CentOS 9 镜像下载
- 混合移动应用中地图导航功能开发与应用
- 欧拉恒等式:数学史上的真正完美公式!
- PTA 顺序表的基本操作
- 高层建筑的定义及分类
- 饭店点餐系统之数据库表结构
- uniapp本地数据库_Uniapp教程|App/uni-app离线本地存储方案
热门文章
- robomongo超时
- golang---go mod 相关问题的解决方法(Unexpected module path、used for two different module)
- 关于“Android Studio and Gradle are using different locations for the JDK.”提示的解决方法
- GBU610-ASEMI智能家居整流桥GBU610
- android10 psp模拟器,ppsspp模拟器安卓版
- PostgreSQL中使用的SQL语法
- requests出现InsecureRequestWarning解决
- Python 嵌套函数
- 二个数据库之间怎么同步
- MATLAB绘制柱状图