字符串
1.判断String中是否包含这个字符
方法 : str.contains("ab"); //同样适用于List<String>
public class Test12 {
public static void main(String[] args) {
String str = "abc";
//ab在str这个字符串中返回true
boolean status = str.contains("ab");
if(status){
System.out.println("包含");
}else{
System.out.println("不包含");
}
}
}
2.String中字符串替换replace()
public static void main(String[] args) {
String str = "abcdefg";
System.out.println(str.replace("cd","哈哈哈"));
}
//输出结果:ab哈哈哈efg
实体操作方法
1.实体相互转行,一个实体类的数据copy到另一个实体类中(java 8)
方法:BeanUtils.copyProperties()
import org.springframework.beans.BeanUtils;
Entity entity= new Entity();
//entity 数据copy到entity1中 注意:字段名和类型一致的数据才会被copy
BeanUtils.copyProperties(entity,entity1);
集合
1.java8 .stream().xx().collect()用法 (java 8)
public static void main(String[] args) {
class Person { private String name; private int age; }
class Person1 { private String name; }
List<Person> list = new ArrayList<>();
list.add(new Person("jack", 20));
list.add(new Person("mike", 25));
list.add(new Person("tom", 30));
List list1 = new ArrayList();
// filter 保留boolean 为true的元素 只保留了person.getAge() == 20
list1 = list.stream().filter(person -> person.getAge() == 20).collect(Collectors.toList());
System.out.println(list1);
//limit(long n) 返回前n个元素
list1 = list.stream().limit(2).collect(Collectors.toList());
System.out.println(list1);
// //skip(long n) 去除前n个元素
list1 = list.stream().skip(2).collect(Collectors.toList());
System.out.println(list1);
//用在 limit(n) 前面时,先去除前 m 个元素再返回剩余元素的前 n 个元素
//limit(n) 用在 skip(m) 前面时,先返回前 n 个元素再在剩余的 n 个元素中去除 m 个元素
list1 = list.stream().limit(pageSize).skip(pageNo*(pageNo-1)).collect(Collectors.toList());
System.out.println(list1);
//从list中只拿对应的元素 map(Person::getName)
list1 = list.stream().map(Person::getName).collect(Collectors.toList());
System.out.println(list1);
//把list数据全部拿到另一个集合中
list1 = list.stream().map(Person::toString).collect(Collectors.toList());
System.out.println(list1);
List<Person1> list2 = new ArrayList<>();
//把list集合对象数据 全部拿到另一个集合中 只拿字段匹配上的
list2 = list.stream().map(item ->BeanUtil.toBean(item, Person1.class)).collect(Collectors.toList());
System.out.println(list2);
}
打印结果:
2.String<String>转换成String[]数组 和 String[]数组转换List<String>
方法:String [] strArray = list.toArray(new String[list.size()]);
方法: List<String> strsToList1= Arrays.asList(arry);
List<String> listA = new ArrayList<String>(strsToList1);
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test12 {
public static void main(String[] args) {
/** List<String> 转换String[] **/
List<String> list = new ArrayList<String>();
list.add("1");
//List<String>转String[] list中可以没有元素为空
String [] strArray = list.toArray(new String[list.size()]);
for(int i = 0; i<strArray.length;i++){
System.out.println(strArray[i]);
}
/**String[] 转换 List<String>**/
String[] arry = {"1","2","3"};
List<String> strsToList1= Arrays.asList(arry);
List<String> listA = new ArrayList<String>(strsToList1);
//经过String[] 转成List<String> 不能使用remove add 因为他的底层还是数组 要经过再次赋值转换
//strsToList1 集合不能remove 和add进行操作 转换后 listA是可以的
for(String str2: strsToList1){
listA.add("1");
System.out.println(str2);
}
}
}
3.Map的遍历
Map<String,String> maps = new HashMap<>();
maps.forEach((key, val) -> {
System.out.println(key);
System.out.println(val);
});
JSON篇
1.创建JSONArray
解析json方法 JSONArray jsAry = JSON.parseArray(str);
for(int i=0; i<jsAry.size(); i++){
JSONObject jos = jsAry.getJSONObject(i); }
public class Test12 {
public static void main(String[] args) {
//生成JSONArray
JSONArray json = new JSONArray();
JSONObject jo = new JSONObject();
jo.put("name", "张三");
jo.put("age", 18);
json.add(jo);
String str = json.toString();
//解析String [{"age":18,"name":"张三"}]JSON
JSONArray jsAry = JSON.parseArray(str);
for(int i=0; i<jsAry.size(); i++){
JSONObject jos = jsAry.getJSONObject(i);
System.out.println(jos.get("name"));
System.out.println(jos.get("age"));
}
System.out.println(str);
}
2.jsonString 转实体一些方法
//String转jsonStr
String srt = "str";
JSON.toJSONString(Str);
//实体转jsonString
String tableNames = JSON.toJSONString(tableVo.getList());
//jsonStr 转实体对象(阿里巴巴)
String jsonStr = "";
StudentVo studentVo = JSON.parseObject(jsonStr, studentVo.class);
//jsonStr转List实体(阿里巴巴)
List<ResultUrlListVo> dataList = JSONArray.parseArray(JSON.toJSONString(jsonStr, ResultUrlListVo.class);
//jsonString 转HashMap
import com.alibaba.fastjson;
String str="";
HashMap hashMap = JSON.parseObject(str, HashMap.class);
//jsonString转List
List<String> tableList = JSON.parseObject(str, ArrayList.class);
mybatis mySql篇
1.查询两时间段 存在的数据
方法: date_format(CREATE_TIME,'%Y-%m-%d') between '2019-05-10' and '2019-11-30'
date_format(CREATE_TIME,'%Y-%m-%d') ='2019-05-10'
##查询单段时间内 存在的数据
SELECT CREATE_TIME FROM tbl_sg_feedback
WHERE
date_format(CREATE_TIME,'%Y-%m-%d') between '2019-05-10' and '2019-11-30'
ORDER BY CREATE_TIME;
##查询单段时间内 存在的数据
SELECT CREATE_TIME FROM tbl_sg_feedback
WHERE
date_format(CREATE_TIME,'%Y-%m-%d') ='2019-05-10'
ORDER BY CREATE_TIME;
2.mysql查询结果接新增1列自定义 <!--新增列100 列名为c -->
SELECT
CREATE_TIME,
'100' as c
FROM tbl_sg_feedback
WHERE
date_format(CREATE_TIME,'%Y-%m-%d') ='2019-05-10'
ORDER BY CREATE_TIME
3.mysql 模糊查询
方法 LIKE CONCAT('%',#{content},'%') <!--sql 模糊查询 -->
SELECT * FROM tbl_sg_feedback
WHERE
nameTitle LIKE CONCAT('%',#{content},'%')
4.mybatis中查询数组List<String> 或String[]
<!-- 查询list<String>集合 -->
SELECT * FROM tbl_sg_feedback
WHERE
PROJECT_ID IN
<foreach collection="list" open="(" close=")" separator="," item="item">
#{item}
</foreach>
<!-- 查询String[] 集合 String[]比List<String>中多加一个index 在mybatis中要加入-->
<!-- parameterType="java.lang.String" -->
SELECT * FROM tbl_sg_feedback
WHERE
PROJECT_ID IN
<foreach collection="array" index="index" item="item" separator="," open="(" close=")">
#{item}
</foreach>
5.mysql不会根据in中id排序,如要排序可以使用自定排序 order by field (id,343,2143,431,....)
SELECT
*
FROM
table1
order by field(id,
<foreach collection="targetIdList" separator="," close=")" item="item">
#{item}
</foreach>
6.两表合并查 关键字 UNION(两表字段必须一致,量表select后面字段必须顺序一致)
SELECT
demand_id AS id,
title AS titleName,
enterprise_type_name AS companyName,
price,
belong_prov AS belongProv,
belong_city AS belongCity,
belong_area AS belongArea,
`status`,
time_start AS timeStart,
time_end AS timeEnd
FROM
t_info_demand
WHERE
del_flag = FALSE
UNION
SELECT
supply_id AS id,
title AS titleName,
enterprise_type_name AS companyName,
price,
belong_prov AS belongProv,
belong_city AS belongCity,
belong_area AS belongArea,
`status`,
time_start AS timeStart,
time_end AS timeEnd
FROM
t_info_supply
WHERE
del_flag = FALSE
7.mysql查询保留两位小数,如果查数据为null显示0
Round(字段,2) 保留两位小数
IFNULL( 字段,0) 当查询数据为空显示0
SELECT
b.hotelname AS hotelName,
b.operatemode AS hotelType,
substring( b.openingdate, 1, 10 ) AS openingDate,
IFNULL( Round( a.overnightavgdiscountrate * 100, 2 ), 0 ) AS overNightAvgDiscountRate,
IFNULL( Round( a.overnightrentalrate * 100, 2 ), 0 ) AS overNightRentalRate,
IFNULL( Round( a.roomrevenuecompletionrate * 100, 2 ), 0 ) AS roomRevenueCompletionRate
FROM
`icdb_income_result_discount` a
LEFT JOIN icdb_com_hotel_d b ON a.shotelid = b.hotelno
WHERE
a.dbizday = '2021-08'
AND a.overnightavgdiscountrate < 0.7
AND b.hotelname IS NOT NULL
8.查询时候字段截取,判断字段显示固定值
substring(字段,起始位置,结束位置) 满足前面条件显示否,不满足显示 是case when (字段 is null or 字段 = '') then '否' else '是' end
案例:
SELECT DISTINCT
( ftq.HotelNo ) AS HotelNo,
ftq.HotelName AS hotelName,
mhb.OperateMode AS joinManagmentWay,
substring( ftq.FinancialOnWorkTime, 1, 9 ) AS financialOnWorkTime,
isnull ( ftq.FinancialName, '' ) AS financialName,
( CASE WHEN ( ftq.TCOnWorkTime IS NULL OR ftq.TCOnWorkTime = '' ) THEN '否' ELSE '是' END ) AS tCOnWork90D,
( CASE WHEN ( ftq.TCCertificationTime IS NULL OR ftq.TCCertificationTime = '' ) THEN '否' ELSE '是' END ) AS tCCertification180D,
ho.EmpName AS shopoWner,
ho.JobCode AS jobCode
FROM
FinancialTrainingQuarterly ftq
LEFT JOIN com_hotel_info mhb ON ftq.HotelNo = mhb.HotelNo
INNER JOIN MDP_HR_HotelManagementPosition ho ON ftq.HotelNo = ho.HotelNo
WHERE
mhb.HotelStateID = 1
AND ho.IsValiD = 1
9.在mysql中获取UUID()和获取当前时间和替换replace()函数
#查询uuid
SELECT UUID();
#把uuid中-替换为空
select replace(uuid(),"-","") as uuid;
#获取当前日期
SELECT NOW();
10.把列数据整合成一条数据
CONCAT()
SELECT CONCAT(`name`,age) as names FROM `user`;
replace(GROUP_CONCAT(NAME, ''), ",", "")
replace(GROUP_CONCAT(NAME, ''), ",", "")
11.获取mysql中所有表
SELECT
table_name
FROM information_schema.TABLES
WHERE table_schema = #{dataSource}
AND table_type = 'base table'
AND table_name = #{tableName}
12.获取表中主键
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = #{tableName}
AND COLUMN_KEY = 'PRI'
and table_schema = #{dataSource}
13.获取表中所有字段
select
GROUP_CONCAT(COLUMN_NAME SEPARATOR " , ")
from information_schema.COLUMNS
where table_name = #{tableName}
and table_schema = #{dataSource}
mybatis java篇
1.mybatis略实体类字段
Mybatis-plus 用 @TableField(exist = false)
非数据库字段,如果不做处理,mybatis执行sql过程中会报错,Cause: java.sql.SQLSyntaxErrorException: Unknown column ‘…’ in ‘field list’
对非数据库字段使用注解@TableField(exist = false)
@TableField(exist = false) //表示该属性不为数据库表字段,但又是必须使用的。
@TableField(exist = true) // 表示该属性为数据库表字段。
Mybatis 用 @Transient
import javax.persistence.Transient;
//例子:
@Transient
private String plan;
@Transient
private String toLoanPeoples;