2019.1.14

买了教程视频 捋一遍 之前看的教程没有的 WebListener severlet监听器(主要作用 统计) public class RequestListener implements ServletRequestListener 上下文监听器(资源加载) public class CustomContextListener implements ServletContextListener

整合mybatis没什么复杂, 操作时候打印sql在配置文件加上mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

2019.1.15

@Transactional 事物 lsof -i:8080 查看端口占用情况 generator 使用方法 打开rapid-gen.bat

  1. 生成器自带了测试数据库,运行start_db.bat后再运行gen user_info即可生成文件
  2. 生成器的主要配置文件为generator.xml,里面修改数据库连接属性
  3. template目录为代码生成器的模板目录,可自由调整模板的目录结构 templateRootDir:C:\Users\林博轩\Documents\WeChat Files\lbx345\Files\generator-hcb\generator-hcb\template Usage: gen table_name [include_path]: generate files by table_name del table_name [include_path]: delete files by table_name gen * [include_path]: search database all tables and generate files del * [include_path]: search database all tables and delete files quit : quit [include_path] subdir of templateRootDir,example: 1. dao 2. dao/,service/ please input command: 输入命令gen 表名(t_city) 即可到处实体类/mapper/mtbatis/service

2019.1.16

mac logback 日志权限 老大更改了logback生产文件的目录,今早项目跑不起来了,提示找不到/opt/work/logs/****.log 但同事跑起来没问题,查找资料+问老大 解决问题。 原因:我的mac 根目录下没有opt文件,同事的电脑都是windows则没有问题 因为window没这些权限问题 解决方案 在根目录下 sudo mkdir opt 用高权限方式新建opt文件目录 项目就可以跑起来了

2019.1.17

写业务

case when and/or使用 SELECT package_times - play_times as times,CASE WHEN device_no=#{deviceNo} and package_times-play_times>0 THEN 1 ELSE 0 END AS STATUS FROM t_race_order WHERE user_id = #{userId} AND pay_status = 1 ORDER BY create_time DESC

mybatis 返回类型错误解决 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating interface com.hcb.cloud.mapper.race.RacePropOrderMapper with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.hcb.cloud.mapper.race.RacePropOrderMapper.<init>() 解决:返回值类型写错 写成mapper了。。。

tabbitMQ 主题模式Topic 老大通俗讲解:多个消费者订阅一个主题 当主题生产了一条消息后 多个消费者都接到了 但经过订阅着路由转发 (实际情况是appid) 转发到具有执行权的消费者。 百度搜索了解:rabbitMQ模式 搜的是有5种

insertUseGeneratedKeys 返回id 用法 正确用法:

RacePropOrderEntity racePropOrderEntity = RacePropOrderEntity.buildPropOrder(raceGameRequestVo);
racePropOrderMapper.insertUseGeneratedKeys(racePropOrderEntity);
return RacePropOrderIdVo.build(racePropOrderEntity.getId());

错误用法:该方法获取的int指总是1 (不是id,是插入成功状态)

int i = racePropOrderMapper.insertUseGeneratedKeys(racePropOrderEntity);

2019.1.18

上午 写业务 一些地方增加了@async异步方法 用起来很方便

2019.1.19

熟悉redis基本操作

JSONObject.parseArray 把list<bean> 转换为JASONArray

转换jsonarray报错syntax error, expect [, actual error, pos 0 格式错误 期待[ 实际是error 报空指针异常:错误代码

List<RaceOrderDetailVo> list1 = null;
        for(RacePropOrderDetailVo racePropOrderDetailVo : list) {
            JSONArray jsonArray = JSONObject.parseArray(racePropOrderDetailVo.getGrade());
            RaceOrderDetailVo raceOrderDetailVo = RaceOrderDetailVo.build(racePropOrderDetailVo,jsonArray);
            list1.add(raceOrderDetailVo);
        }
return ListVo.buildMapper(list);

因为吧list1声明为null 没有add方法所以报错 正确代码

List<RacePropOrderDetailVo> list = racePropOrderMapper.OrderDetail(orderNo);
        List<RaceOrderDetailVo> list1 = new ArrayList<>();!!!!
        for(RacePropOrderDetailVo racePropOrderDetailVo : list) {
            JSONArray jsonArray = JSONObject.parseArray(racePropOrderDetailVo.getGrade());
            RaceOrderDetailVo raceOrderDetailVo = RaceOrderDetailVo.build(racePropOrderDetailVo,jsonArray);
            list1.add(raceOrderDetailVo);
        }
return ListVo.buildMapper(list1);!!!!