1.java 开发中常用的方法

字符串

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;

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MM-BD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值