干活经验

  1. 页面的查询条件为空时,代码逻辑忽略了这一情形(动态sql中少一个if情形)

    if(fm.all("State").value==''){//不选择"状态"条件进行查询
        querySQL += "and a.state in ('5','6','8','9') ";
    }else if(fm.all("State").=='00'){//'00'代表未质检状态
        querySQL += "and a.state in ('5','6') ";
    }else {
        querySQL += "and a.state = '" + fm.all("State").value+"' ";
    }		
    
  2. push代码之前一定要仔细看看哪些代码更改了(缩进一定要看看看啊看看啊看看)

  3. 改pom文件了, 要点一下maven的Reload

  4. 动态sql的神奇运用:同一个controler对应三种查询初始化(前台传一个标记字段,后台根据标记值不同进行动态sql)

  5. 接口A返回结果Response.ok(result) ,用postman调用接口A显示的结果中,值为null的字段不显示
    原因:配置文件中有如下配置:

    #设置全局,Null值不返回到前端
    jackson:
         default-property-inclusion: non_null  #不为空的属性才会序列化
    
  6. 项目中比较Date大小的写法:一般会有DateUtils工具类,封装了compareTo方法。

  7. 入参必填项非空校验,数据库查出的东西存到对象中可能为空,使用时候记得非空校验

  8. 比较两个字符串是否相等时 误用了==,应该用equals

    • 我们通常用==来比较两个变量是否相等 :
      当比较的变量是基本类型且都是数值类型,那么==比较的是其数值。
      当比较的是引用变量,只有当他们都指向同一个对象的时候才会返回true。

    • equals方法:该方法属于object类,因此所有引用变量都可以调用这个方法来判断是否与其他引用变量相等,但是如果这样的话该方法和"=="来判断两个对象相等的标准和使用没有区别。很多时候,程序判断两个引用变量是否相等,也希望有一种类似于”值相等“的判断规则,并不严格要求两个引用变量指向同一个对象。这时候可以通过重写equals方法。String类就重新定义了equals方法,该方法可以判断两个字符串对象所引用的字符串直接量是否相等

    • 如果要用equals方法,请用object<不可能为空>.equals(object<可能为空>))

      例如:应该使用

      "bar".equals(foo)
      

      而不是

      foo.equals("bar") 
      
  9. 工作一年都没注意的问题!!!!!!Spring 事务注解@Transactional
    所有增删改都要加@Transactional(rollbackFor = Exception.class)

    如果类加了这个注解,那么这个类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚。在@Transactional注解中如果不配置rollbackFor属性,那么事物只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事物在遇到非运行时异常时也回滚。

    • 声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。
      声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,更清爽
    • 当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该标注来覆盖类级别的定义。
  10. java在循环中进行业务处理时,将业务的公共代码从循环中拿出去,能拿出循环的代码都拿出去,不然会慢。

  11. springboot开发时,ServiceImpl类要用注解@Service不然报错

  12. 在Mapper的interface中:要用注解@Mapper,不然报错(无法创建这个mapper类型的bean)

    • @Mapper注解是由Mybatis框架定义的一个描述数据层接口的注解,注解往往起到的都是一个描述性作用,用于告诉spring框架此接口的实现类由Mybatis负责创建,并将其实现类对象存储到spring容器中。
  13. springboot项目中有多模块多个启动类,遇到postman调接口调不进去的情况:是idea启动配置那里配错了启动类名

  14. 下列代码,用postman调用时候报错:

    public void saveHesitationPeriodSetting2(MultipartFile file, HttpServletResponse response) throws IOException { 
        response.addHeader("status", "500");
        response.addHeader("message", "导入数据有必填项未填写");
    }
    

    我试验的结果是:response.addHeader("message", "这里不能有中文标点"); 不可以有中文标点。猜测可能是和这个项目配置文件有关,自定义了拦截

posted @ 2022-04-29 02:31  大于昨天  阅读(33)  评论(0编辑  收藏  举报