每日知识记载总结54
Posted cuiyf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日知识记载总结54相关的知识,希望对你有一定的参考价值。
mybatis中在同一个事务,循环执行同一个sql语句,只有第一次会执行的问题 (来源)
一、问题描述:
使用spring @Transaction事务时,在for循环中需要多次执行同一查询语句,第一次查询出对象后,对对象进行修改后,结果再进行第二次查询的时候,查询返回的数据是自己第一次修改后的数据。因为业务需要每次查询都需要取更改数据库,以后的查询都会根据上一次循环修改后的值进行操作。
二、解决方法:
在xml文件 select语句添加 flushCache="true" ,告诉mybatis查询结束后刷新缓存,不记录查询结果到一级缓存中
<select id="pageListCount" resultType="int" flushCache="true">
三、原因:
mybatis有一级缓存和二级缓存,mybatis对查询的语句会存在一级缓存中,如果在一个事务中,mybatis对同一个session多次查询同一个sql语句就会去找缓存而不是再去查一次数据库
mysql使用外连接替换in和not in (来源)
select * from table t where t.id not in (select id from table2)
-->
select a.* from table1 a left join table2 b on a.id = b.id where b.id is null;
-->
select a.* from table1 a left join table2 b on a.id = b.id where b.id is not null;
String.format()字符串(来源)
String.format()字符串常规类型格式化的两种重载方式
format(String format, Object… args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
format(Locale locale, String format, Object… args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。
转换符 详细说明 示例
%s 字符串类型 “喜欢请收藏”
%c 字符类型 ‘m’
%b 布尔类型 true
%d 整数类型(十进制) 88
%x 整数类型(十六进制) FF
%o 整数类型(八进制) 77
%f 浮点类型 8.888
%a 十六进制浮点类型 FF.35AE
%e 指数类型 9.38e+5
%g 通用浮点类型(f和e类型中较短的) 不举例(基本用不到)
%h 散列码 不举例(基本用不到)
%% 百分比类型 %(%特殊字符%%才能显示%)
%n 换行符 不举例(基本用不到)
%tx 日期与时间类型(x代表不同的日期与时间转换符) 不举例(基本用不到)
高级功能:
标志 说明 示例 结果
- 为正数或者负数添加符号 (“%+d”,15) +15
0 数字前面补0(加密常用) (“%04d”, 99) 0099
空格 在整数之前添加指定数量的空格 (“% 4d”, 99) 99
, 以“,”对数字分组(常用显示金额) (“%,f”, 9999.99) 9,999.990000
( 使用括号包含负数 (“%(f”, -99.99) (99.990000)
# 如果是浮点数则包含小数点,如果是16进制或8进制则添加0x或0 (“%#x”, 99)(“%#o”, 99) 0x63 0143
< 格式化前一个转换符所描述的参数 (“%f和%<3.2f”, 99.45) 99.450000和99.45
第一个例子中有说到 %tx x代表日期转换符 我也顺便列举下日期转换符
标志 说明 示例
c 包括全部日期和时间信息 星期六 十月 27 14:21:20 CST 2007
F “年-月-日”格式 2007-10-27
D “月/日/年”格式 10/27/07
r “HH:MM:SS PM”格式(12时制) 02:25:51 下午
T “HH:MM:SS”格式(24时制) 14:28:16
R “HH:MM”格式(24时制) 14:28
Multipartfile与File类型相互转换
用org.apache.commons.io这个包中的类
1.M转F
File file = new File(path);
FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file);
2.F转M
File file = new File("src/test/resources/input.txt");
FileInputStream input = new FileInputStream(file);
MultipartFile multipartFile =new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input));
StringBuffer 相关操作 (来源)
字符串实现原理通过该类实现的。
StringBuffer可以对字符串内容进行增删。
StringBuffer是个容器。是字符串缓冲区。
很多方法与String相同。
StringBuffer是可变长度。
容器的特点:
长度可变化,可以操作多个类型,最终可以通过toString( )转换为字符串。
存储。
StringBuffer append( ):指定数据类型作为参数添加到已有数据类型的结尾处。
StringDuffer insert(index,数据):可以将数据插入到index位置。
删除。
StringBuffer delete( start, end ):删除缓冲区的数据,包含start,不包含end。
StringBuffer deleteCharAt( index ):删除指定位置的字符。
获取。
char charAt( int index )
int indexOf( String str )
int lastIndexOf( String str)
int length( )
String substring(int start, int end)
修改。
StringBuffer replace(int start, int end)
void setCharAt(int index, char ch)
反转。
StringBuffer reverse( );
将缓冲区的指定的数据存储到指定字符数组中。
void getChars( int srcBegin, int srcEnd, char[ ] dst, int dstBegin)
以上是关于每日知识记载总结54的主要内容,如果未能解决你的问题,请参考以下文章