Java项目笔记(三)

一、前端传参类似以下格式,对象中包含一个对象,后台此时接收option为stirng类型

curriculumid 
question 
 answer
option {optionOne ,optionTwo ,optionThree }

故需将该option在后台转换成对象

 <dependency>  
        <groupId>net.sf.json-lib</groupId>  
        <artifactId>json-lib</artifactId>  
        <version>2.2.3</version>  
        <classifier>jdk15</classifier>  
 </dependency>


JSONObject jsonObject = JSONObject.fromObject(choice.getOption());
Option option = (Option) JSONObject.toBean(jsonObject,Option.class);

二、以前没太注意过的一个问题,MySQL数据库中会为每个字段设置长度,例如:在这里插入图片描述
permission类型varchar,长度为64
这个长度是指:如果输入汉字,可以输入64个汉字。如果输入英文可以输入64个英文字母。没有所谓的一个汉字等于两个英文字母。

三、跳出指定循环或判断

if (store.length > 0) {
        bgm:
        if (!store[0].equals("7")) {
            i += 1;
            for (String s : store) {
                for (String w : we) {
                    if (s.equals(w) && !s.equals("6")) {
                        i += 3;
                        break bgm;
                    }
                }
            }
        }
    }

四、springboot service层在controller层空指针异常
原因controller层方法访问权限不是public
此时方法名显示灰色

五、List集合添加数据空指针异常问题

//list集合必须初始化,如果声明为null,没有初始化,添加值的时候会一直报空指针
List<Map<String,Object>> mapList = null;

List<Map<String,Object>> mapList = new ArrayList<>();

六、MySQL数据类型中 decimal 问题

对于向DECIMAL列的插入操作,目标是准确的数据类型,无论要插入的值是准确的还是近似的,
将采用“半值向上舍入”规则
所以如果需要使用decimal类型时,要指定小数位
一般采用varchar接收就可以了

七、按照List集合中的Map中的某一个参数排序

//该处是从数据库里查出的数据
List<HashMap<String, Object>> maps = resourcePlanningMapper.inquireInventoryProducts(secondLevel, fuzzyQuery, parentid);

//根据该产品库存总量降序,如果是升序则将compareTo的两个参数换下位置就可以
 Collections.sort(maps, new Comparator<HashMap<String, Object>>() {
        @Override
        public int compare(HashMap<String, Object> o1, HashMap<String, Object> o2) {
              Integer o1value = Integer.valueOf(o1.get("totalInventory").toString());
              Integer o2value = Integer.valueOf(o2.get("totalInventory").toString());
              return o2value.compareTo(o1value);
           }
       });

八、service层路径突然失效 报错 Cannot resolve symbol
解决办法 ,清理idea缓存并重启

九、事务隔离机制的问题
前端获取数据传到后台,因数据格式比较复杂,用Java代码处理数据太繁琐,采用先保存再用SQL分析数据的方式,把处理好的数据再读出来。此时发现因方法加了事务,MySQL默认的事务隔离机制为可重复读,所以当我保存到MySQL时,其实并没有真正的保存到MySQL,所以此时读出来的数据有问题。

十、 You can change this value on the server by setting the ‘max_allowed_packet’
前台传输的字符串超过了MySQL默认的接收长度
设置系统变量
set global max_allowed_packet = 2 * 1024 * 1024 *10
一定要关闭本次连接,重新连接数据库,再查看
show VARIABLES like ‘%max_allowed_packet%‘;

posted @ 2022-01-20 23:22  暮雨寒冬  阅读(48)  评论(0编辑  收藏  举报