笔记

89 阅读1分钟
public static void main(String[] args) {

    Function fun = new CommonFunction() {
        @Override
        public String getName() {
            return "contains";
        }

        @Override
        public Object call(Object[] arguments) {
            if (arguments != null && arguments.length > 0) {
                String listString = (String) arguments[0];
                String[] stringArray = listString.split(",");
                List<String> list = Arrays.asList(stringArray);
                String currentValue = String.valueOf(arguments[1]);
                return list.contains(currentValue);
            } else {
                return false;
            }
        }
    };
    // 不带 '' 会被解析为变量替换,如果没有则填null
    String el = " COLUMN1 == 1 ||  contains('1,2',COLUMN2) ";
    FelEngine instance = FelEngine.instance;
    instance.addFun(fun);
    Map<String, Object> map = new HashMap<>();
    map.put("COLUMN1", 1);
    map.put("COLUMN2", 2);
    MapContext context = new MapContext(map);
    Object flag = instance.eval(el, context);
    System.out.println(flag);
}

image.png

1693551097314_B4BB5557-9CF5-4ab5-BA60-5265A7AC07BC.png 1693551511810_098D1E28-4076-45ab-8223-4B3CFC8D0405.png

select *.id from A where not exists( select 1 from B where A.id = B.id)

    -- 拿最新的money
  select
        #{businessDate},
        money,
        id,
        '0'
    from (
        select
            ROW_NUMBER() over(partition by id order by date desc) as row_id,
            id,
            money
        from student
        where date &lt;= #{businessDate}
    ) tmp
    where row_id = 1
    

select * from A 
<WHERE>
	<foreach collection="XXXList" item="XXX" open="(" close=")" separator="or">
		A.filed_a = #{XXX} and A.filed_b in 
		<foreach collection="YYYList" item="YYY" open="(" close=")" separator=",">
			#{YYY}
		</foreach>
	</foreach>
</WHERE>

where ( A.filed_a = #{XXX} and A.filed_b in (YYY,YYY) OR A.filed_a = #{XXX} and A.filed_b in (YYY,YYY) )
notpid++ 驼峰换下划线:

([a-z])([A-Z])
\1_\l\2

flatmap:扁平化操作,可以将二维数组合并为一个一维数组

// 合并两个集合,去重
Stream.of(Arrays.asList(a), Arrays.asList(b)).flatMap(Collection::stream).distinct().collect(Collectors.toList());
SELECT 'ALTER TABLE student DROP name' INTO @test_sql
FROM DUAL
WHERE (SELECT COUNT(1) FROM information_schema.COLUMNS WHERE table_schema = DATABASE() AND table_name = 'student' AND column_name = 'name') =1;

PREPARE test_stmt
FROM @test_sql;
EXECUTE test_stmt;
DEALLOCATE PREPARE test_stmt;
// A,B升序,C降序
list.sort(Comparator.ComparingInt(Student::getA)
			.thenComparingInt(Student::getB)
			.thenComparingInt(Student::getC,Comparator.reverseOrder())
			);
			
转map 根据 A 升序
Map<Integer, List<Student>> map = list.collect(
			Collectors.groupingBy(Student::getA, TreeMap::new, Collectors.toList()));
                        
                        

// 需要对属性假如属性为 id 为null进行分组   
List<Student> list;
List<List<Student>> groupList;
list.stream().collect(Collectors.groupingBy(student->student.getBookId()==null?0:1,Collectors.toList())).forEach((bookId,tmpList)-> groupList.add(tmpList));                        


select name ,
	   age
	   sum(case when sex = 1 then money else 0 end ) as boy_money ,
	   sum(case when sex = 2 then money else 0 end ) as girl_money 
	   from student 
	   group by name ,age;