知识点 小结
项目里小知识点记录一下。
◆◆◆◆◆◆Mybatis◆◆◆◆◆◆
1.mybatis中,使用foreach等动态标签时,外部不能用CDATA tag。
2.CDATA 标签作用
增加sql可读性。如果不使用CDATA标签的话,sql中特殊字符(“<” 或是”>” .etc)需要进行转移符处理。
3.mapper.xml文件中,使用注释时,注释之中不能使用#{}. 如下:
--Table.Column = #{}
虽说使用了--进行了注释,但是sql参数binding、设置时,仍然会报错。
4.执行下列sql时,更新80条以上的数据时,出现参数过多的error
sql如下:
Mapper.xml
foreach语句↓
1 insert into table A 2 (a,b,c,d,e...,z) // 实际是50个字段 3 values 4 (#{A},#{B},#{C},#{D}...#{Z},) // 实际是50个字段
我的db:Sybase(我也第一次听这个db,说是项目里和SAP的东西兼容,所以项目选了这个db,但是这个db比较坑啊,很多常用的函数啊,或是with语句等,都没有,不可以用。我哭)
解决办法:
将更新的结果集,分成小的,每个小于80条的结果集。这样就可以成功插入了。
分割的方法(可以使用Guava的api将list进行分割):
1 List<User> users = userService.findAll(); 2 //每50个一组 3 List<List<User>> parts = Lists.partition(users, 50); 4 parts.stream().forEach(list -> { 5 process(list); 6 });
5.Unsupported SQLtype 1111
Sybase 的官方驱动 jConnect4结合myBatis使用时,发现如下问题,当insert或者update语句的变量含有null值,会报错:### Cause: java.sql.SQLException: JZ006: 捕获到 IO 例外:java.io.IOException: JZ0SL: 不受支持的 SQL 类型 1111。
由于参数出现了null值,myBatis进行操作的时候,指定jdbcType类型的参数时,mybatis默认设置为jdbcType.OTHER,导致Sybase数据库无法识别此格式。
解决方法:给参数加上jdbcType可解决(注意大小写) ,或是将null的情况避免掉
insert into xxx(a,b) values(#{a,jdbcType=VARCHAR}, #{b,jdbcType=DATE})
update xxx set a=#{a,jdbcType=VARCHAR} where id=#{id}
◆◆◆◆◆◆Maven◆◆◆◆◆◆
1.Eclipse Maven dependency jar garyed out, can't import classes from it
resolution:
change <scope>test</scope> to <scope>compile</scope>
◆◆◆◆◆◆java◆◆◆◆◆◆
1.文件中指定换行符和编码格式(日文)
1 String[] fileContent = new String[] {};
// encoding这里指定的是"MS932",它是日语文字的编码。 2 try (OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(""), "MS932")) { 3 for (String content : fileContent) { 4 writer.write(content);
// 在这里可以明确指定换行符号,不会随着环境(windows or lunix)的改变而变化 5 writer.write("\r\n"); 6 } 7 } catch (IOException ex) { 8 // to do 9 }
关于日语encoding的编码,这里有个链接,大家可以具体看一下,看过之后,可以理解日语encoding的一个变化历程。
http://una.soragoto.net/topics/13.html
2.在金融系统中,java中关于金钱方便的数值建议使用BigDecimal类型。
◆◆◆◆◆◆Lunix◆◆◆◆◆◆
1.查看使用process情况
ps -aux
2.性能命令
top
vmstat
◆◆◆◆◆◆others◆◆◆◆◆◆
1.项目架构
JBoss(wildfly 18)
Spring,mybatis 3.4.6,Spring-boot ,Guava,Spring-data
Java 11.0.4
Red Hat Enterprise Linux Server 7.6(Maipo)
Front-end:
Thymeleaf,Js,CSS,HTML5