(工作日常记录是也)٩꒰▽ ꒱۶⁼³₌₃ 学习去咯 2021-09-07

application/x-www-form-urlencoded 和 multipart/form-data的区别

application/x-www-form-urlencoded :
  1. 它是post请求的默认格式,浏览器的原生

    表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。

  2. 提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。比如汉字‘丁’吧,他的utf8编码在十六进制下是0xE4B881,占3个字节,把它转成字符串‘E4B881’,变成了六个字节,每两个字节前加上百分号前缀,得到字符串“%E4%B8%81”,变成九个ascii字符,占九个字节(十六进制下是0x244534254238253831)。

  3. 请求体是简单的键值对信息,如:

    k1=v1&k2=v2&k3=v3
    
multipart/form-data :
  1. 由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。

  2. multipart/form-data将表单中的每个input转为了一个由boundary分割的小格式,没有转码,直接将utf8字节拼接到请求体中,在本地有多少字节实际就发送多少字节,极大提高了效率,适合传输长字节。

    ${bound}
    Content-Disposition: form-data; name="Filename"
     
    HTTP.pdf
    ${bound}
    Content-Disposition: form-data; name="file000"; filename="HTTP协议详解.pdf"
    Content-Type: application/octet-stream
     
    %PDF-1.5
    file content
    %%EOF
    ${bound}
    Content-Disposition: form-data; name="Upload"
     
    Submit Query
    ${bound}--
    

    详情可见:https://blog.csdn.net/five3/article/details/7181521

MYSQL ESCAPE

总结:当需要模糊查询的信息中包含_ 或者 % ,name就需要使用 escape 申明 符号后的 _ %是作为匹配内容。

在sql like语句中,比如

select * from user where username like '%nihao%',select * from user where username like '_nihao',

其中%做为通配符通配多个,_作为通配符通配一个

如果要真的去查询username中含有 % _ 的,需要使他们不再作为通配符

将% _ 在like中转义,拿_为例,

转义前:

select * from user where username like '_nihao'

转义后:

select * from user where username like '/_nihao' escape '/'
意思就是说/之后的_不作为通配符

#案例3:查询员工名中第二个字符为_的员工名

SELECT
   last_name
FROM
   employees
WHERE
   last_name LIKE '_$_%' ESCAPE '$';

Not in 优化

总结:Not in 的优化可以考虑 Not exists 。如:

SELECT c.CustomerId,CompanyName FROM Customers c
WHERE EXISTS(
SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID) 

建议:直接连表查询,进行null值判断

hibernate hql连接查询

总结:使用@JoinCloumn 以及 @OneToOne 修饰类中的对象属性。这要求需要contain-a关系的存在,就是实体类之间需要组合关系。

建议:直接上nativeSql ,原生sql不香吗,浪费时间搞来搞去。最好就别用Hibernate , mybatis plus 不香么???!!!

上一篇:mysql特殊字符查询_MySQL用LIKE特殊字符搜索


下一篇:SQL优化--操作符优化