2019 第三周 开发笔记

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);!!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章