项目经验

项目经验

1.springboot和mybatis整合之后,如果没有在application中配置驼峰转换,是不会自动把带"_"的字段转换成实体类中对应的变量的.转换代码如下:

#开启驼峰转换
mybatis.configuration.mapUnderscoreToCamelCase=true
mybatis.configuration.map-underscore-to-camel-case=true

2.springboot整合mysql+mybatis时,application.properties的配置如下:

spring.datasource.url=jdbc:mysql://192.168.1.48:3306/xrzj_bst_dev?useSSL=false&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username = root
spring.datasource.password = xxxxxxx
spring.datasource.driverClassName = com.mysql.jdbc.Driver
#端口
server.port=8889
#mybatis的mapper文件位置
mybatis.mapper-locations=classpath:com/xuanrui/bst/fund/mapping/*.xml,com/xuanrui/bst/user/mapping/*.xml

3.在java的console想要显示对应的sql语句可以在application.properties中进行如下配置:

#打印日志,sql
logging.level.org.springframework=WARN
logging.level.org.spring.springboot.dao=DEBUG
logging.file=logs/spring-boot-logging.log
logging.level.com.xuanrui.bst=DEBUG

4.使用hibernate中的@NotEmpty,@NotBlank,@NotNull三个注解可以快速排除掉参数中的空值,方便进行参数的验证,使用规则:
1.@NotEmpty 用在集合上面
2.@NotBlank用在String上面
3.@NotNull用在基本数据类型上面

@NotEmpty
Asserts that the annotated string, collection, map or array is not {@code null} or empty.
加了@NotEmpty的String类,Collection、Map、数组,是不能为null或者长度为0的(String、Collection、Map
的isEmpth()方法)

@NotBlank
Validate that the annotated string is not {@code null} or empty.
The difference to {@code NotEmpty} is that trailing whitespaces are getting ignored.
“The difference to {@code NotEmpty} is that trailing whitespaces are getting ignored.” –> 和{@code NotEmpty}不同的是,尾部空格被忽略,也就是说,纯空格的String也是不符合规则的。所以才会说@NotBlank用于String。

@NotNull
The annotated element must not be {@code null}.不能为空

5.连表查询时,当两个表有相同字段时,恰好该字段是查询条件,该字段必须指定到底是主表字段还是副表字段,否则mysql无法判断出到底应该采用哪个字段.

6.计算当前月的上一个月,上一年,或者前一天方法:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
        
        //获取前月的第一天
        Calendar   cal_1=Calendar.getInstance();//获取当前日期 
        cal_1.add(Calendar.MONTH, -1);
        cal_1.set(Calendar.DAY_OF_MONTH,1);//设置为1号,前一个月的第一天
        firstDay = format.format(cal_1.getTime());
        System.out.println("-----1------firstDay:"+firstDay);
        //获取前月的最后一天
        Calendar cale = Calendar.getInstance();   
        cale.set(Calendar.DAY_OF_MONTH,0);//0号,即上个月的最后一天
        lastDay = format.format(cale.getTime());
        System.out.println("-----2------lastDay:"+lastDay);
          
          
        //获取当前月第一天:
        Calendar c = Calendar.getInstance();    
        c.add(Calendar.MONTH, 0);
        c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 
        String first = format.format(c.getTime());
        System.out.println("===============first:"+first);
          
        //获取当前月最后一天
        Calendar ca = Calendar.getInstance();    
        ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));  
        String last = format.format(ca.getTime());
        System.out.println("===============last:"+last);
         
    }
    /** 
   * 字符串的日期格式的计算 
   */ 
  public static int daysBetween(String smdate,String bdate) throws ParseException{ 
          SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 
          Calendar cal = Calendar.getInstance(); 
          cal.setTime(sdf.parse(smdate)); 
          long time1 = cal.getTimeInMillis(); 
          cal.setTime(sdf.parse(bdate)); 
          long time2 = cal.getTimeInMillis(); 
          long between_days=(time2-time1)/(1000*3600*24); 
          return Integer.parseInt(String.valueOf(between_days)); 
  }

计算上一个月的最后一天时,要用当前月份,0天就是上一个月的最后一天

7.关于数据传递中的格式问题,目前项目中,前端传过来的数据基本全部为表单数据,所以都是new出对应对象,来进行接收,关于@Requestbody注解的使用,是在传递json格式的参数对象时使用.
idea中测试json格式参数的方法,demo如下:

POST http://127.0.0.1:8889/referrer/getReferrerListByDate
Content-Type: application/json

{
	"xxx":creator,
	"xxx":xxxxx
}

<> 2018-11-24T110048.200.json
<> 2018-11-23T070443.200.json
<> 2018-11-23T112931.200.json
<> 2018-11-23T112916.200.json
<> 2018-11-23T112657.200.json
<> 2018-11-23T112626.200.json
<> 2018-11-23T112549.200.json
<> 2018-11-23T103904.200.json
<> 2018-11-23T094047.200.json
###

关于对象转json字符串,或者json转对象的方法:
使用MapperObject

8.项目所有的jar包都报错,发现依赖里只有jdk1.8,其余所有的jar都没有了.
造成原因:给项目打包时,因为是私服,所以换了maven的setting配置文件,忘记换回来了.
解决方法:重新换回原来的setting文件.

9.designer项目的项目如果实体类是依赖于另一个项目(也就是实体类不再本项目中,在另外一个项目,该项目时主项目的依赖),如果实体类发生了变更,需要更新子项目所在的版本号,然后让该maven项目重新依赖,重启项目即可,如果项目还是不能启动,则可以去linux服务器上,删除项目,然后重新拉取项目即可.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值