1.配置clickhouse或其他任何数据库数据源报错
解决办法:service层调用到clickhouse的方法上方加上@DynamicDataSource(dataSource = "XXXXXX")
2.报错`‘org.springframework.dao.InvalidDataAccessApiUsageException:
Error updating database. Cause: java.sql.SQLFeatureNotSupportedException SQL: insert into xxxxxxxxx Cause: java.sql.SQLFeatureNotSupportedException ; null; nested exception is java.sql.SQLFeatureNotSupportedException’`
原因:clickhouse自增主键 statement预处理直接抛错
解决办法:在mapper中设置
3.传参一定要注意,传多个数组的话,就直接List嵌套传递
4.从一个应用访问另一个应用时,应该去对应位置最上边查看@ConfigurationProperties(prefix = "api.fnfinancejobservice"),来确定在properties文件配置的前缀,进而找到对应应用名
5.当测试时某个数据不同的话,就把sql拷贝出来
通过自己已知的数据来进行拼接在数据库客户端中查询,然后分解查看代码中没查出来的原因是什么,从而查出问题位置
6.当在Mapper.xml文件中新增了某几个查询字段,但是查询的时候没有返回值的原因就是需要加进行映射
7.一般情况下,依赖关系是继承的,
例如web继承其他几个模块的pom依赖,此时就不要在web中添加相同的依赖,不然就会造成依赖冲突,从而无法运行
8.不同应用提供页面时,本地调试需要启动nginx
9.mysql建表模板:
CREATE TABLE mmc_order_bill_csdrf01001 (
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '数据库自增id',
insert_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入账时间',
update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
business_dt timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '业务日期(结算时间/退订时间',
store_id varchar(100) NOT NULL DEFAULT '0' COMMENT '门店编码 示例:HM001',
biz_order_id bigint(20) NOT NULL DEFAULT 0 COMMENT '订单号',
sub_order_id bigint(20) NOT NULL DEFAULT 0 COMMENT '子订单ID',
main_global_id bigint(20) NOT NULL DEFAULT 0 COMMENT '主订单ID',
PRIMARY KEY (id),
KEY idx_tb_biz_order_id USING BTREE (biz_order_id),
KEY item_code (item_code)
) ENGINE = InnoDB AUTO_INCREMENT = 10000 CHARSET = utf8 COMMENT 'xx表'
注意:字段用“`”包裹,default字段和备注需要用“'”包裹
10.:insert into on duplicate key update这个语法,若是对应操作的表有text这类字段,相关语法可能会导致数据库crash重启
11.数据库中的时间是时间戳的时候,传入查询的时候,必须也得传时间戳查询
12.查询表后大部分字段都显示为null而没有显示值的话,那么有两种可能:
①看这些字段的映射是否正确,②看这个查询用的是resultMap还是resultType,如果是resultType的话,也有可能导致查出数据字段显示为null,原因是因为使用resultMap的时候 resultMap="BaseResultMap",的BaseResultMap中通过 这样的语句,进行了驼峰的转换,所以显示就没有问题
13,如果运行出现报错
ERROR StatusLogger Unable to invoke factory method in class class org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender for element RollingRandomAccessFile. java.lang.IllegalStateException: Infinite loop in property interpolation of {APP_NAME}/event.log: APP_NAME->sys:APP_NAME
原因:启动配置的VM options缺少参数-DAPP_NAME=应用名(默认可以写default)
14.Long类型作比较不可以直接用“=”号,需要用equels或者用longValue()
例如: totalAmt.longValue() != refundCountAmt.getTotalAmount().longValue()
15.在用bigdecimal做除法运算时,必须考虑到除不尽的时候,
错误的: BigDecimal AmtDivideGuestAmt = new BigDecimal(refundAmount).divide(new BigDecimal(guestAmount));
正确的:
BigDecimal AmtDivideGuestAmt = new BigDecimal(refundAmount).divide(new BigDecimal(guestAmount),2,BigDecimal.ROUND_HALF_UP);
如果后续还要做乘法运算的话,这个保留小数就需要在乘法过后再加,这样精度会更高 有一个.setScale(0, BigDecimal.ROUND_HALF_UP)的方法
16.mysql唯一键索引冲突异常有三个:
①:DuplicateKeyException ②:MySQLIntegrityConstraintViolationException ③:DataIntegrityViolationException