ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

每日知识记载总结54

2019-12-16 12:00:29  阅读:242  来源: 互联网

标签:总结 String int 54 知识 类型 StringBuffer 字符串 id


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)

标签:总结,String,int,54,知识,类型,StringBuffer,字符串,id
来源: https://www.cnblogs.com/cuiyf/p/12048377.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有