工作记录

(工作记录)

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

1.测试dubbo服务

测试dubbo服务不是测试http请求的时候在dubbo服务的实现类建测试包测试

类上要加上测试注解
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Bootstrap.class)

2.数据库相关

(1). 数据库字段可以为空就不用截取,字段类型是varchar带长度就根据长度截取,因为超长会报错

(2).查询数据库的字段数据类型要跟接收类的属性类型一致,不然会导致没有数据或者接受的数据不正确(比如数据库是Bigdecimal,接收对象用int接受就会损失精度)

(3).模糊查询:

模糊查询首先想到的就是contains,contains用法如下:
select * from students where contains(address, ‘beijing’)
但是,使用contains谓词有个条件,那就是列要建立索引,也就是说如果上面语句中students表的address列没有建立索引,那么就会报错。

模糊查询sql写法(不区分大小写)
<if test="name != null and name!=''">
    and upper(CHANNEL_NAME) like '%' || upper(trim(#{name}))|| '%'
</if>

(4).数据库隔离级别:4种隔离级别从高到低依次为:

1.- Serializable:串行化

2.- Repeatable Read: 可重复读

3.- Read Commited:读已提交的数据

4.- Read UnCommited:读未提交的数据

1.Mysql默认隔离级别:可重复读
2.Oracle默认隔离级别:读已提交(只支持读已提交跟串行化[隔离事务的最高级别,事务之间完全隔离])
3.Sql Server默认隔离级别:读已提交

(5).事务传播行为:就写两个

1.PROPAGATION_REQUIRED:操作必须在事务中执行,没有事务就创建

2.PROPAGATION_SUPPORTS:有事务最好,没有也没差

(6).并发事务引起的问题

(1).脏读:一个事务读取到另外一个事务未提交的数据

(2).幻读:同样的条件,第一次跟第二次查询的符合条数不一样(重点在于更新跟删除操作)

(3).不可重复读:同样的条件,第一次跟第二次查询到的数据值发生变化

(7).事务四大属性ACID

1.原子性:事务中的所有操作,要么全部执行,要么全不执行

2.一致性:事务操作前后数据都是一致的

3.持久性:事务一旦提交,对数据库的影响是永久的,不能回滚

4.隔离性:一个事务在提交之前,其他事务不可见

3.Assert(断言)

例子:

Assert.assertNotNull(a,b);
参数b:值
参数a:b值为空时的报错信息

Exception in thread "main" java.lang.AssertionError: 不能为空
	at org.junit.Assert.fail(Assert.java:88)
	at org.junit.Assert.assertTrue(Assert.java:41)
	at org.junit.Assert.assertNotNull(Assert.java:712)
	at Test2.main(Test2.java:12)

4.Rop框架一点东西

request.getRopRequestContext()之后可以获得系统级参数跟业务级参数

5.参数检验

(1).接口文档中的属性如果有做长度限制就要加上@CharSize(max=多少,message=什么)

(2).判断是否为空用@NotBlank比@NotNull好

(3).部分检验注解

@JsonProperty(“unbind_id”)
@NotBlank(message = “解绑id不能为空”)
@Size(max = 32, message = “解绑id不能超过32个字符”)
@Pattern(regexp = PRIMARYKEY_PATTERN, message = “解绑id只能包含字母和数字”)

(4).调用方法之前会先检验参数,不符合直接返回错误信息不进入方法

(5).参数是用对象接收的时候,可以在对象前加上@Vaild进行参数校验,然后加上一个BindingResult bindingResult

public ApiResponse payOutList(HttpServletRequest request, HttpServletResponse response, @[email protected] PayOutListVO reqVO,BindingResult bindingResult){
    ParamsValidErrorHandler.handleParamsValidateResult(bindingResult);
    //参数检验后的方法内容
    }

(6).参数用字符串的时候,如果需要进行参数校验,可以先把字符串转对象

public void payoutExport(HttpServletRequest request, HttpServletResponse response, String param){
    PayOutListVO reqVO=JSONObject.parseObject(param,PayOutListVO.class);
    ParameterValidation.validateRequestDTO(reqVO);
    //对象转换成功后的方法内容
    }
    post请求,表单提交
    "param":{"id":"5","orderCode":"5"}

(7).手动检验参数抛出自定义异常

throw new NpayAdminException(NpayAdminErrorEnum.PARAMETERS_ERROR,"参数错误)");

6.比较简便的为对象赋值

赋值新对象
UserInfo userInfo = UserInfo.builder()
        .name("zzl")
        .email("[email protected]")
        .build();

7. 并发控制(数据库方面)

数据库中有版本字段,编辑时传入当前版本,作为判断条件控制并发操作,做编辑修改/审核/新增操作时查询数据库判断版本是否正确,然后将版本加1

sql例子

UPDATE T_CHANNEL c
    SET c.STATE = 'ENABLED',
        c.VERSION = c.VERSION + 1,
        c.LAST_EDITOR_ID = #{lastEditorId},
        c.LAST_EDITOR = #{lastEditor},
        c.LAST_EDITOR_DT = #{lastEditorDt}
    WHERE c.ID = #{id}
    AND c.VERSION = #{version}

编辑修改状态时需要先根据传过来的id去查询状态跟版本时候跟前端传过来的状态跟版本一致,不一致抛错,定义变量接收操作结果,变量不等于一说明没有进行任何更新,给出对应提示(可能进行同时操作,刷新重新试试)

涉及到版本号的新增/编辑/审核操作要判断成功行数,根据不同的返回结果返回数据

工作记录
工作记录

8.excel导出

根据实体类导出对应表,没什么注意的,应该就(数据库数据集合)List中实体类E的属性要跟导出实体类B的属性一致,常用注解@Excel,参考地址 http://opensource.afterturn.cn/doc/easypoi.html

根据模板导出excel,主要代码:

TemplateExportParams params = new TemplateExportParams("templet.xls");
Map<String,Object>map=new HashMap<>();
//map里面存放模板数据
Workbook workbook = ExcelExportUtil.exportExcel(params, map);
Excel模板要放在resource目录下

如果发现workbook为空的情况可以试试添加pom插件

<!-- 让maven不编译xls文件,但仍将其打包 -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>xls</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
    </configuration>
</plugin>

9.BigDecimal常用方法

工作记录

10.后台管理权限相关

开发完成后在类上加上@SessionCheck注解,在各个方法上加上

@PermissionCheck(code = "PAY_OUT_LIST", name = "支出报表列表", desc = "支出报表列表", customvalue = "ZCBB")

工作记录
然后需要在对应数据库表插入数据

INSERT INTO WEBGEAR_PERMISSION (
POINT_TO,
CODE,
PCODE,
TREE_PATH,
NAME,
"DESC",
IS_CREATELOG,
MD_CODE
)
VALUES
(
'com.fzs.pay.controller.v2.IncomeCostManagerController/payOutList',
'PAY_OUT_LIST',
'',
'/ZCBB/PAY_OUT_LIST',
'支出报表列表',
'支出报表列表',
'0',
'ZCBB'
);

数据库配置:10.20.100.63:1521 fzsdb 账号/密码:samp/lxkj_info

11.远程debug

配置Edit Configurations->Remote新增
工作记录
一般只需要修改这个地方的相关参数
工作记录
端口从配置文件中找,ip找服务器
工作记录
工作记录

12.查看日志

开发环境

打开SecureCrt
(SecureCrt安装步骤:https://blog.****.net/yanjiangdi/article/details/78343452)
工作记录
工作记录
工作记录
账号:samp
密码:[email protected]

生产环境

1.打开Check Point SecuRemote拨v*n
账号:
密码:
工作记录
2.登陆堡垒机
堡垒机链接地址:https://10.20.160.100
账号:linxin
密码:lx123456
工作记录
登录完成后直接点击就好
工作记录

13.