zoukankan      html  css  js  c++  java
  • int类型属性判空

    在用Hibernate开发查询时遇到的问题,方法的输入参数为一个User对象,其中status和permission属性为int型,

    在进行junit单元测试时,只设置email一个参数,测试程序报错,debug进去看后发现new的对象的int类型的属性都是0,java把int类型的属性都初始化为0了.

    因为在页面上也有status和permission属性的查询条件输入,这时就有一个问题,当页面不输入status和permission两个查询条件时,后台service无法判断是否为空,,因为都是0

     1 String sql = "select U from User U where 1 = 1 ";
     2         if(u.getEmail() != null && !u.getEmail().equals("")) {
     3             sql += " and U.email = '" + u.getEmail() + "'";
     4         } 
     5         if(u.getName() != null && !u.getName().equals("")) {
     6             sql += " and U.name = '" + u.getName() + "'";
     7         }
     8         if(u.getGender() != null) {
     9             sql += " and U.gender = '" +u.getGender()+ "'";
    10         }
    11         if(u.getStartBirthdate() != null) {
    12             sql += " and U.birthdate >= " + u.getStartBirthdate() + "'";
    13         }
    14         if(u.getEndBirthdate() != null) {
    15             sql += " and U.birthdate <= " + u.getEndBirthdate() + "'";
    16         }
    17         if(u.getStatus() != null) {
    18             sql += " and U.status = " + u.getStatus() + "'";
    19         }
    20         if(u.getPermission() != null) {
    21             sql += " and U.permission = '" + u.getPermission() + "'";
    22         }
    23         Query query = session.createQuery(sql);
    24         
    25         if(u.getStart() == null) {
    26             u.setStart(0);
    27         }
    28         if(u.getLimit() == null) {
    29             u.setLimit(10);
    30         }

    因为int类型的属性会在new对象时自动初始化为0,无法判空

    我的解决办法是在实体类中把int类型改为Integer类型,Integer是java类,在初始化时被初始为null,这样就解决了查询条件永远为0的问题.

  • 相关阅读:
    [SHOI2015]零件组装机
    [AH2017/HNOI2017]影魔
    空指针RE第一次公开赛-笔记
    i春秋2020新春公益赛WP
    博客园Markdown编辑器修改代码配色、添加代码行号
    buuctf Writeup
    关于Tarjan的一些问题
    NOIP2013D1T3货车运输 (生成树+树链剖分)
    1051: [HAOI2006]受欢迎的牛 (tarjan强连通分量+缩点)
    CodeForces 438D The Child and Sequence (线段树 暴力)
  • 原文地址:https://www.cnblogs.com/dirkmurphyjava/p/3379750.html
Copyright © 2011-2022 走看看