首页 > 编程语言 >Javaweb学习笔记第九弹

Javaweb学习笔记第九弹

时间:2022-09-19 15:45:33浏览次数:70  
标签:map Javaweb -- 笔记 查询 --- 条件 第九 where

MyBatis案例--环境准备

1、依据之前在Navicat建立数据表的方法,新建立一个数据表

2、将数据表的相关内容表现在Java文件的实例上:即成员变量和set、get成员方法

3、new一个测试Java文件的Test.Java文件

4、安装MyBatis插件

能够较为方便地查看SQL映射文件下的statement对应的核心配置文件地位置

查询操作

1、编写接口方法:定义一个名称为:(BrandMapper)的接口

同之前操作相同,同时需要new一个.xml文件,与接口同名

2、编写SQL依语句,执行方法:写一个测试用例

步骤
1、获取SqlSessionFactory对象

2、获取SqlSession对象

3、获取Mapper接口的代理对象

4、执行方法

5、释放资源

查询所有:select * from 表名;

若是实体类属性名和数据库表列名不一致,不能自动封装数据

1、起别名
2、resultMap

查询部分:
1、 select 相应列名(可以使用起类型别名的方法进行查询)from 表名;----每次查询都要定义一次别名

2、使用将类型别名封装到一个sql里面,可以重复、多次使用;----但不灵活

再在select里面引用

3、使用----映射
---放置不一样的名称

并将select中的resultType更改为:resultMap="",中间放置id名称

查询--查看详情

举例:----参数占位符:#{} ${}
在查询所有的基础上,后面添加一个where id=#{id};

#{}:会将其替换为?,为了防止SQL注入---------使用时机:参数传递的时候

${}:会存在SQL注入的问题----------使用时机:表明或者列名不固定的情况下

参数类型:

parameterType:可以省略---用来设置参数类型

特殊字符处理:

1、转义字符---适用于特殊字符较少时

2、CDATA区---适用于特殊字符较多时(CD-->回车-->在其中填入特殊字符即可)

查询--条件查询

多条件查询

where 条件 and 条件 and 条件

三种方式接受参数:

使用=表示准确查询,而使用like,则表示模糊查询

1、散装参数

模糊查询,需要在参数两端加上对应的%,实现模糊查询;

2、对象参数

需要用set方法封装对象,举例:

Brand brand=new Brand();
brand.setStatus("status");
brand.setCompanyName("companyName");
brand.setBrandName("brandName");

3、map集合

需要用到HashMap封装对象,举例:

Map map=new HashMap();
map.put("status");
map.put("companyName");
map.put("brandName");

查询--多条件--动态条件查询

是对多条件查询的优化,实现了不一定要输入全部条件时才能查询到相关信息的功能,提高了查询的灵活性;

where

列名1=#{列名1}

若是定义的第一个条件存在,可以实现该动态查询

但是,若是定义的第一个条件不存在,where后面会直接显示and连接符,查询出现漏洞;

解决方法

1、恒等式:在第一个if选择之前加上一个恒等式,将之前定义的第一个if语句前面加上and连接符,即可解决!

2、用将if语句包含起来,即可解决!

单条件---动态条件查询


where后面添加一个标签,再在里面添加几个标签,即可实现单条件动态查询

但存在特殊情况,若是用户并未选择标签,直接选择查询,会直接报错!这个问题需要解决!

解决方法

恒等式:
中将封装进去,里面放置一个恒等式,即可解决问题!

标签:map,Javaweb,--,笔记,查询,---,条件,第九,where
From: https://www.cnblogs.com/liuzijin/p/16706500.html

相关文章

  • 【源码笔记】FutureTask
    /**DONOTALTERORREMOVECOPYRIGHTNOTICESORTHISFILEHEADER.**Thiscodeisfreesoftware;youcanredistributeitand/ormodifyit*undertheter......
  • CS61A学习笔记
    0.前言2022.9.19其实寒假就有要开始学习CS61A的想法,苦于对英文课程界面以及上英文课的不习惯止步六个月。而寒假之后的六个月,我完成了从零到一,再从一到十的突破。在寒假......
  • 【学习笔记】差分约束系统
    【图论】差分约束系统前置芝士SPFA判负环与最短路SPFA判负环负环定义:边の权值之和为负数的环不会真的有人不会SPFA吧先放张图就是在SPFA跑最短路的时候判断一下有......
  • 《软件测试的艺术》读书笔记(三)
    3.3用于代码检查的错误列表常见错误对照表,容易出现的问题:过于注重代风格码而不是代码错误、过于模糊不够具体。           3.3.1数据引用错误......
  • 【白话设计模式】课程笔记整理
    白话设计模式六大设计原则开闭原则Open-ClosePrinciple,OCP在⾯向对象编程领域中,开闭原则规定软件中的对象、类、模块和函数对扩展应该是开放的,但对于修改是封闭的。......
  • 道长的算法笔记:贪心算法经典模型
    (一)区间模型(1.1)区间合并(1.2)区间选点(1.3)区间覆盖(1.4)区间分组(二)贪心常用证明方法......
  • rabbit-mq集群docker搭建笔记
    1.安装docker1、yum包更新到最新yumupdate2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的yuminstall-yyum-uti......
  • redis学习笔记
    Redis一、rhel7安装redis6.0.6[[email protected]]#cat/etc/redhat-releaseRedHatEnterpriseLinuxServerrelease7.6(Maipo)1、下载安装包地址:https:......
  • 《js 设计模式与开发实践》读书笔记 13
     职责链模式的定义是:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 ......
  • 《js 设计模式与开发实践》读书笔记 14(完)
    在传统面向对象语言中,给对象添加功能常常使用继承的方式,但是继承的方式并不灵活,还会带来许多问题:一方面会导致超类和子类之间存在强耦合性,当超类改变时,子类也会随之改变;另......