随手记

本文探讨了Java中常见的逻辑运算符误用问题,并通过具体案例介绍了如何正确处理字符串及对象的空值检查。此外,还详细分析了SQL查询中变量类型对结果的影响,以及如何优化动态SQL语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:java中有一次使用 10<a<100报错,但是a>=100看起来同样是两个表示判断的符号,后来查阅资料得知>=和<=是java自身规定的一种比较符号,而<>是两种符号,需要用&&连接起来。

2:get请求测试时候用&拼接参数

3:判断string或者对象为空时候null和""在前,防止空指针异常(什么情况下会出现空指针异常,有待深究)

4:修改以前同事写的代码时候发现一个sql语句问题


 SELECT
 MAX(test.heartrate) as heartrate
 FROM
 test
 WHERE test.createDate like concat('%','2018-09-09','%');

查询心率的最大值,然后发现查询出来的值并不是其中最大的一个,查阅资料得知,varchar比较数据大小和int不一样,int值是直接比较大小,varchar是先比较第一位,例如100和9,先比较第一位9>1,所以varchar类型的9 大于100.修改数据类型为int便可以成功比较大小。另外一种方法

​
 SELECT
 MAX(test.heartrate+0) as heartrate
 FROM
 test
 WHERE test.createDate like concat('%','2018-09-09','%');

​

这样查询时候,mysql会自动把值转化为int类型进行比较。

6:修改以前代码发现一个数据库更新语句问题

错误代码

        UPDATE tb_user_equipment
        SET
        <if test="policeState!=null and policeState!=''">
            policeState=#{policeState},
        </if>
        <if test="longitude!=null and longitude!=''">
            longitude=#{longitude},
        </if>
        <if test="latitude!=null and latitude!=''">
            latitude=#{latitude}
        </if>
        WHERE equipmentNum=#{equipmentNum}

正确代码

        UPDATE tb_user_equipment
        SET
        <if test="policeState!=null and policeState!=''">
            policeState=#{policeState}
        </if>
        <if test="longitude!=null and longitude!=''">
            ,longitude=#{longitude}
        </if>
        <if test="latitude!=null and latitude!=''">
            ,latitude=#{latitude}
        </if>
        WHERE equipmentNum=#{equipmentNum}

对比可以看出逗号位置不一样。错误的sql语句,在进行if判断时候,如果参数存在,会给参数后面加入一个逗号,会导致更新语句报错,正确写法则会避免这个问题。但是这个仅仅适用于前面有一个固定存在的更新数据,如果全部需要判断,这样也会出现问题。这时候就需要用到另外一个表达式<trim prefix="set" suffixOverrides=","> </trim>

代码如下

  UPDATE tb_user_equipment
    <trim prefix="set" suffixOverrides=",">
        <if test="policeState!=null and policeState!=''">
            policeState=#{policeState},
        </if>
        <if test="longitude!=null and longitude!=''">
            longitude=#{longitude},
        </if>
        <if test="latitude!=null and latitude!=''">
            latitude=#{latitude}
        </if>
   </trim>
        WHERE equipmentNum=#{equipmentNum}

注意此时,逗号在每个参数最后位置,这个表达式用于去掉sql语句中多余的“,”,如果存在固定更新的字段的话,放在前面用第二种方法就可以了,不推荐用这种大量if判断,为多个接口提供一个更新语句,降低耦合。

7:清除linux系统下面tomcat里面的Catalina.out文件命令 cat /dev/null >catalina.out

8:po面向数据库,vo面向业务层谨记。

9:百度了一下netty大多数情况下强于mina,需要后期深入学习,目前用不到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值