代码技能啊

https://www.wolai.com/jfjyU1aMeRMqVEUe5KxWgF
http://localhost:8000/swagger-ui.html

把borrowerVO赋值到borrower

        BeanUtils.copyProperties(borrowerVO,borrower);

分页

  IPage<Borrower> borrowerPage = new Page<>();
        //当前页
        borrowerPage.setCurrent(page);
        //每页条数
        borrowerPage.setSize(limit);
        // 模糊查询条件
        QueryWrapper<Borrower> borrowerQueryWrapper = new QueryWrapper<>();
        borrowerQueryWrapper.like(!StringUtils.isEmpty(keyword),"name",keyword)
                .or()
                .like(!StringUtils.isEmpty(keyword),"mobile",keyword)
                .or()
                .like(!StringUtils.isEmpty(keyword),"id_card",keyword);
        //执行
        IPage<Borrower> borrowerIPage = baseMapper.selectPage(borrowerPage, borrowerQueryWrapper);

在这里插入图片描述

//字符串精确

        BigDecimal bigDecimal = new BigDecimal("0");

X除以100

X.divide(new BigDecimal("100"))

转long

       Long.parseLong(userId)

但是MySQL数据库是没有Boolean类型的,

也就是说 mysql把boolean=tinyInt(1) 了。
MYSQL保存boolean值时用1代表TRUE,0代表FALSE,boolean在MySQL里的类型为tinyint(1)。
不传is_字段默认为0

所以,知道是去除is前缀的就可以,我们MySQL不使用这个属性
————————————————
版权声明:本文为CSDN博主「一天不写代码难受」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/python113/article/details/118515172

时间 睡眠一秒

            TimeUnit.SECONDS.sleep(1);

运行时异常抛出

        // 如果实际开发时我们无法声明抛出异常,但是又不想掩盖问题
            // 那么就可以把当前捕获的异常对象封装为一个运行时异常抛出
            throw new RuntimeException(e);

原子类方法

private AtomicInteger number = new AtomicInteger(0);
//++
number.incrementAndGet();

UUID

//转化 大写  小写
String key = UUID.randomUUID().toString().substring(0, 5).toUpperCase();
String value = UUID.randomUUID().toString().substring(0,5).toLowerCase();

comparable和comparator

java.lang.comparable
comparable 用于比较两个对象的大小,对于引用数据类型(自然排序)

int result=s1.comparaTo(s2)
s1>s2  返回1
s1=s2  返回0
s1<s2  返回-1

java.util.comparator
comparator 用于比较两个对象的比较器 (定制排序)

public class ddd {

    public static void main(String[] args) {

        String s1="1";
        String s2="1";
        int i = s1.compareTo(s2);
        System.out.println(i);

        System.out.println("------------------");
        StudentComparator studentComparator = new StudentComparator();
        int compare = studentComparator.compare(s1, s2);
        System.out.println(compare);
    }
}
class StudentComparator implements Comparator{

    @Override
    public int compare(Object o1, Object o2) {
        String s1 = (String) o1;
        String s2 = (String) o2;
        int i = s1.compareTo(s2);
        return i;
    }
}

取字符串常量池

lockKey.intern()

忽略属性不识别 实体类上加

@JsonIgnoreProperties(ignoreUnknown = true)

操作redis缓存

//redisTemplate需要设置数据类型序列化。工具类
//查数据   对string类型操作
redisTemplate.opsForValue().get(cacheKey);
//存数据   参数:缓存key  数据库中数据  过期时间 时间单位
redisTemplate.opsForValue().set(cacheKey, skuInfoDb, RedisConst.SKUKEY_TIMEOUT, TimeUnit.SECONDS);
//存数据 对hash类型操作   kfv
redisTemplate.opsForHash().put(userCartKey,skuId.toString(),existCartInfo);
//存数据 对hash类型操作  k-fv 
redisTemplate.boundHashOps(userCartKey).put(skuId.toString(),existCartInfo);
//查小key
redisTemplate.boundHashOps("HashKey").keys();
//查value
redisTemplate.boundHashOps("HashKey").values();

//expire 设置到期时间
redisTemplate.expire(userCartKey,RedisConst.USER_CART_EXPIRE, TimeUnit.SECONDS);

//判断在userCartKey中有无skuId.toString()
redisTemplate.boundHashOps(userCartKey).hasKey(skuId.toString())

利用redis的setnx命令分布式锁

//参数  setnx的key value  过期时间 单位
redisTemplate.opsForValue().setIfAbsent(lockKey, token,30, TimeUnit.MINUTES);

加redisson分布式同步锁

//redissonClient  需要设置SSL连接。工具类
//获取锁
RLock lock = redissonClient.getLock(lockKey);
//加锁
lock.lock();
//释放锁
lock.unlock();

以流的形式对集合进行遍历 (无返回值)

productList.stream().forEach((product)->{
           System.out.println(product);
        });

以流的形式对商品进行分类 (有返回值)

productList.stream().collect(Collectors.groupingBy(Product::getCategory));

以流的形式遍历同时转为大写 (有返回值)

遍历然后做一些处理收集成一个集合

        ArrayList<String> characterList = Lists.newArrayList("a", "b", "c", "d");
        List<String> collect = characterList.stream().map(character -> {
            return character.toUpperCase();//到此结果为stream类型,所以需要转为list
        }).collect(Collectors.toList()); //collect转化为list
        System.out.println(collect);

@SneakyThrows

  //将当前方法抛出的异常,包装成RuntimeException,骗过编译器,使得调用点可以不用显示处理异常信息
    @SneakyThrows

split用法

1.最普通的用法
		String str1 = "aa,bb";
		String[] split1 = str1.split(",");
		System.out.println(split1.length);
		//这个结果是2,都知道的

获取request的Parameter 两种方法

在这里插入图片描述

 @RequestParam String originalUrl

String originalUrl = request.getParameter("originalUrl");

indexOf方法

// 返回指定 子字符串filterWhite 在此 字符串path 中第一个匹配项的索引。如果没有匹配项,则返回-1。
if (path.indexOf(filterWhite)!=-1){}

对象属性赋值 copy

//把parentOrderInfo对象的属性  传给childOrderInfo
 BeanUtils.copyProperties(parentOrderInfo,childOrderInfo);

ifnull

ifnull(e1,e2)   e1为null返回e2   e1不为null返回e1

SQL行锁 sql后面加

for update

字符串用gson转list集合

Gson gson = new Gson();
List<PurchaseListGoods> purchaseListGoods = gson.fromJson(purchaseListGoodsStr, new TypeToken<List<PurchaseListGoods>>(){}.getType());

ServerHttpRequest request

 List<String> hederValueList = request.getHeaders().get("token");

HttpServletRequest request

   String userId = request.getHeader("userId");

request参数丢失问题 网关中解决

  //4.把用户信息userId 保存到header中传给shop-web那边的request  mutate变化
        if(!StringUtils.isEmpty(userId)||!StringUtils.isEmpty(userTempId)){
            if (!StringUtils.isEmpty(userId)){
                request.mutate().header("userId",userId).build();
            }
            if (!StringUtils.isEmpty(userTempId)){
                request.mutate().header("userTempId",userTempId).build();
            }
            //放开拦截器 让下游继续执行(传递了参数)
            return chain.filter(exchange.mutate().request(request).build());
        }

openfeign远程调用参数丢失问题 创建远程调用拦截器

package com.atguigu.interceptor;

import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
/**
 * 解决openfeign远程调用 丢失参数问题
 * 用来对发起feign请求的拦截器
 *  在这里我们用它来把一个微服务的(用户id信息)传给另一个微服务
 */
@Component
public class FeignInterceptor implements RequestInterceptor {
    public void apply(RequestTemplate requestTemplate){
            ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            if(requestAttributes!=null){
                HttpServletRequest request = requestAttributes.getRequest();
                requestTemplate.header("userTempId", request.getHeader("userTempId"));
                requestTemplate.header("userId", request.getHeader("userId"));
            }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值