自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 分页查询<resultMap>中有<collection>每页条数问题

1. 使用mybatis + pageHelper去查询,<resultMap>标签中有一对多的<collection>数据时,会造成分页数据不足给定预期条数。那么可以通过其他的方式来解决这种问题:1)方法1:单独写一个select 做关联查询,collection有一个select属性和column属性,https://github.com/pagehelper/Mybatis-PageHelper/issues/1852)方法2:主数据分开分页查,其他关联数据在业务层

2020-09-02 16:33:28 3096

原创 feign不支持get请求参数对象解决方案

1. 问题描述:早期controller有一个由前端直接调用的获取商品详情的接口getGoodsInfo(ReqGoodsInfo req), Get请求方式;后来想要在业务服务由后台对商品详情页的几个接口整合成一个,那么前端直接只调用一次即可。选择了feign昨晚跨服务调用的调用框架。那么原先的getGoodsInfo接口就要提供一个可供调用的client端如下@RequestMapping( method = RequestMethod.GET, value = "/goods

2020-08-26 15:03:13 2722

原创 mysql批量插入防重复

防重复插入大致有以下几种:insert ignore into: 结合主键或者唯一索引on duplicate key updateinsert into… select … where not existsreplace into注意:这里主要对<foreach> 中separator用union all<insert id="insertBatch"> insert into t_activity_obj (activity_id, tar...

2020-08-13 15:47:43 607

转载 <? extends T>与<? supper T>的区别

看到说的比较明确的一篇文章:https://www.cnblogs.com/chenxibobo/p/9655236.html

2020-07-28 16:11:52 215

原创 mysql按某字段指定的值进行排序

举个栗子:假如一个商品下,有多个货品,各个货品的状态值都不一样,那么当只想展示商品中的某一个货品时,希望用户端看到的优先级是在售的货品中的一个,根据mysql提供的方法:field(column,value1,value2,value3,……), 可满足当前需求.如:order by field(onshelf_status, 'ON_SHELF','OFF_SHELF','FORCE_OFF_SHELF','WAIT_AUDIT') asc limit 1;...

2020-07-27 12:09:37 3149

原创 有条件的count()

1. 通常情况下只需要:select count(distinct o.shop_id) as shopCount2. 只统计已结算的,即有条件的情况:巧妙借助null,以及distinct的位置select count(distinct if(o.settle_status = 1, o.shop_id, null)) as settleShopCount...

2020-01-06 10:08:06 874 1

原创 数据库枚举

描述:1. 同事数据库表设计时,有个字段的类型使用了枚举类型,并给定了默认的枚举类型;后来因为业务的扩展,增加了其他的枚举类型,在java中加了后,没有同步在数据库表的该字段。后来插入新值的枚举类型的数据记录市,报错:Data truncated for column1. 这个错误有点莫名其妙,初一看,以为是数据重复的限制造成的,但一查,并无相同类型的数据。2. 后来看了看库表的字段结...

2019-12-30 15:18:32 1044

原创 idea突然很卡解决办法

1. 问题描述:win10环境,8G内存,idea一直用的很好,基本不带卡,前两天突然变卡,下了个电脑管家清理垃圾,然并卵。卡的实在无法忍受,重启idea, 重启电脑,依然无效。可以看出,实际上没开什么软件,总共也才500M内的内存,但是一直提示内存占用率高达90+;2. 后来进行了一次内存检测,总共15分钟左右,电脑检测完成,自动开机后,再次打开同样的软件,结果恢复到以前一样,不卡...

2019-11-21 17:28:02 12185 8

原创 JSONObject

1. 问题描述:使用了TreeMap来接收前端的参数,以期自动进行排序,而不需要自己再进行排序;并且如果前端给过来的值已经在数据库中的字段有值,则取db值返回;若不存在,则插入接收前端的值db。以下进行模拟接收前端参数:private void buildTestExtraFields(ReqUserCommon req) { JSONObject extraInfo = new ...

2019-11-11 22:03:37 823

原创 数据库表关键字段问题

1. 如果涉及库表时,不小心使用了数据库的关键字,则当使用TK(Mapper)自带的Model selectBy..()方法时,关键字段无法自定义处理,导致报错:如:com.alibaba.druid.sql.parser.ParserException: ERROR. token : SHOW, pos : 462. 处理方法:1) 将表中的关键字改名2) 将使用自定义的select...

2019-10-31 09:55:25 938

原创 并发安全系列1

序言:本系列是通读《Java并发编程实战》一书,对里面的某些描述进行摘选,希望对初识线程安全的你们有所帮助。1. 线程安全性定义:当多个线程访问某个类时,这个类始终都能表现出正确的行为,则称这个类时线程安全的。2. 常见的加锁约定:将所有的可变状态都封装在对象内部,并通过对象的内置锁对所有访问可变状态的代码路径进行同步,使得在该对象上不会发生并发访问。在许多线程安全类中都使用了这...

2019-10-29 10:11:11 129

原创 BigDecimal使用divide()异常

1. BigDecimal 做除法时,系统抛出 “ Non-terminating decimal expansion; no exact representable decimal result”,提示出错行如下:model.getTxMb().multiply(model.getMb().divide(model.getBeforeMb())).setScale(6, Roundin...

2019-10-15 10:35:21 4464

原创 RestTemplate使用

1. 调用第三方接口时,RestTemplate提供了比较方便的相关方法:1)getForObject(String url, Class<T> responseType, Object... uriVariables)2) getForEntity(String url, Class<T> responseType, Object... uriVariables...

2019-09-26 10:52:20 492

原创 mysql死锁

1. 产生如题数据库死锁问题:1) update时,如果where条件里面涉及多个字段,区分度都比较高且字段都分别建了索引的话,mysql会多个索引各走一遍,然后结果取个交集;单条记录更新不会引发问题; 多条记录并发更新时,如果索引行数有重叠,因加锁顺序可能不同,互相等待可能会导致死锁,为什么加锁顺序会不同呢?我们的sql中where条件的顺序是一定的,那么加锁顺序也应该一定,为什么会有加...

2019-09-25 17:49:40 196

原创 if test == 的坑

遇到了一个坑,处理方式参考如下:https://blog.csdn.net/xl19961223/article/details/81362696

2019-09-08 15:30:04 1466

原创 mybatis先排序后分组

1. 一个统计数据的需求是取每个月数据,并展示当月的总值;因为展示该月总值的话,需要展示该月中记录时间最大的作为展示;故先要进行排序后再分组;select if(sd.tx_type=1, sum(sd.tx_vb), 0) as txVb, if(sd.tx_type=0, sum(sd.tx_vb), 0) as outVb, sd.after_vb, sd.create_ti...

2019-08-26 15:19:48 2548

原创 百度APIak和sk

百度文档中,经常看到有标示:百度的ak和sk:如: 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度云应用的AK】&client_secret=【百度云应用的SK】'申请百度的api时,有三个配置项,分别是appId, apiKey, secretKe...

2019-08-22 10:13:55 3769 1

原创 Date日期参数传递(上)

1. 日期传递误差!!// 打印日志结果:2019-08-20public void update(Observable o, Object arg) { Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -1); LOGGER.debug("=========debug: {}", DateForma...

2019-08-21 17:26:12 2987

原创 mybatis遍历foreach中or拼接

1. 关键代码:select id, name from t_keys where 1 = 1<if test="keys != null"><foreach collection="keys" item="key" open="AND (" close=")" separator="or" > name= #{key}</foreach...

2019-08-21 10:31:44 10701

原创 日期分组及明细

1. 平常大多数的业务展示明细,基本都是一个纯list结构数据就搞定。但是凡事都有例外。比如像一些交易的记录,需要对日期进行分组。数据格式存在嵌套2. 以下为自己的一种处理方式,没经过效率的对比不知道最优解,仅供参考:<select id="listRecords" resultMap="listRecordsMap"> select t.*, p.payment_i...

2019-08-16 11:12:41 302

原创 循环依赖

问题描述:idea上将一个方法抽为公共方法,启动时候报错:This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off说的是Bean名称重复了。检查了一番,莫名其妙没发现问题,idea没...

2019-08-14 10:33:05 790

原创 mybatis批量更新

引言:经常会遇到的一种业务是进行批量插入或者更新,但是如果使用不当,也会遇到问题。这里有以下几种方法:1. 直接在xml中进行for遍历集合参数:<update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" separator=";" item="i...

2019-08-13 11:13:50 265

原创 mysql插入或更新

1. 数据插入或更新,既可以在java业务层进行,也可以在mysql数据库层处理。2.业务层一般做法是先查询,如果不存在在插入,如果存在则更新,但是查询和插入不是原子性操作,在并发量比较高的时候,可能两个线程都查询某个记录不存在,所以会执行两次插入,然后其中一条必然会因为主键(这里说的主键不是递增主键)冲突而失败。而数据库层mysql中 insert ... on duplicate k...

2019-08-08 17:43:09 6534

原创 varchar字段赋值int查询结果不正确

1. 如果mysql中定义了varchar类型的字段,查询时给varchar赋值为int型,可能会出现多条数据的意想不到的情况;select user_id from t_merchant where status = true and merchant_id = 12. 但如果将值定义为字符型,才会出现自己想要的结果。3. 经过测试,得知数据库的处理方法是:如果查询时varch...

2019-08-07 10:54:08 872

原创 insertBatch 入参Set

1. 批量插入时,参数可以是List, Map,但是没用过Set。某次在处理操作时,定义了List筛选符合条件的数据,然后批量插入。恰恰因为此,导致数据有重复而获取数据时异常。2. 由于Set与List类似,故直接将定义的List改为Set, 但没想到依然报错。网上也没有找到使用Set作为入参的案例。Mapper中代码: int insertBatch(Set<Model&...

2019-08-03 09:50:43 1940 1

原创 @JsonFormat转换前端日期参数

描述:之前一直使用好好的@DateTimeFormat(pattern = "yyyy-MM-dd"), 当某天需求变化,时间精度要求更高时,@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")其中,请求方式post, @requestBody限定参数即突然报错:Caused by: com.fasterxml.jackson.databi...

2019-07-19 16:50:35 1189

原创 数据库区分大小写

问题描述:做二维码的短链接保存字段设置为varchar字段时,根据短链接查询出的数据因出现多于1条而报错。实际上这两个短链在大小写上存在区别的,但是:1. 数据库默认查询字符串时大小写不敏感。2. 解决方法:1)将该字段设置为varbinary类型,问题得到解决。2)如果不修改字段类型,则在Select语句改成这样, select * from table where field...

2019-07-12 11:56:03 2219

原创 @Transactional不回滚

遇到了一个如题说描述的,在B方法调用其他方法A时,账户加积分,如果报错则抛异常;在B方法中,账户减积分;结果A抛异常后,B仍然减了积分,不回滚!!!1. 排查问题时,方法上主键做如下调整:@Transactional(rollbackFor=Exception.class),问题得到解决。说明:Spring框架的事务管理默认地只在发生RuntimeException和Error时才...

2019-07-08 12:07:56 2385

原创 穿透多层代理获得真实ip

1. 使用微信支付时,有的手机ip获取不到外网ip,导致无法支付成功,提示:网络环境未能通过安全验证请稍后再试2. 之前使用的方法,只是粗略的,并不能适用所有情况,所有手机。同时首先确保ngix代理访问api中做了相关配置,如:proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $remo...

2019-07-01 16:37:42 1843

转载 @JsonProperty使用

https://www.cnblogs.com/winner-0715/p/6109037.html

2019-06-24 09:24:48 495

原创 java跨域?

1. 问题描述:自己做的两个项目,其中A作为开放平台,可以授权登陆,B作为第三方平台接入A;在调用时报错:HttpClientErrorException: 405 Not Allowed,网上一大堆说的都是跨域问题。所以一直都往跨域的解决方向处理此错误。2. 过程:经过一些列的神操作和调试,比如:response.setHeader("Access-Control-Allow-Origi...

2019-06-04 17:19:05 157

原创 springboot 邮件推送

1. 需求:项目中有个功能实现将账单邮件推送2. 过程:1)需要开启POP3/SMTP支持:https://jingyan.baidu.com/article/4f7d5712b1ac7c1a201927da.html 2)添加相关jar依赖:<dependency> <groupId>org.springframework.boot</grou...

2019-05-29 16:50:05 651 1

原创 springboot RedisTemplate key前面乱码问题

1. 问题描述:使用springboot微服务架构,同事使用了如下进行存储数据:redisTemplate.opsForValue().set(k, v, 2, TimeUnit.MINUTES); 我这边统一对所存储的数据进行处理,当通过 redisTemplate.opsForValue().get(k) 获取不到数据时,使用我自己的另外方式发送数据,并存储:redisTempla...

2019-05-21 16:20:13 3861 4

原创 JSONObject toJSONString错误

1. com.alibaba.fastjson.JSONObject 继承了JSON,可以使用其2个重要的方法:Model model = new Model();String json = JSONObject.toJSONString(model); // serializes model to JsonModel model2 = JSONObject.parseObject(j...

2019-05-10 15:12:03 14573

原创 SourceTree 切换分支时报错

1. 问题描述:由于dev开放分支的主分支,经一个同事误操作命令,合并进来了另外一个分支的文件,导致dev一些文件被删除。后又由于管理员在回滚此次合并时操作不当,未能恢复到正确的dev分支节点,而采用的做法是先备份了dev,然后再从master新建了新的dev分支来代替。后面又经过了一些列的操作后,想要切换分支时,出现如下错误:The following untracked workin...

2019-05-09 16:12:00 2505

原创 sourceTree remote unpack failed

1. 问题描述:从master-to-merge 主分支拉出来的bugfix分支,修复bug后,重新合并到master-to-merge,但是出现报错:remote unpack failed: unable to create temporary object directory2. 经过查问,原来是因为管理员调整git上的权限范围,导致提交不上去。...

2019-05-08 18:48:33 555

原创 redis无法模糊匹配keys

问题描述:有个业务中需要删除某个前缀的所有Redis缓存,于是用RedisTemplate的keys方法先查出所有合适的key,再遍历删除。但是在keys(prefix+"*")时每次取出的都为空。解决方法:在java,引入StringRedisTemplate而不是RedisTemplate,StringRedisTemplate本身继承自RedisTemplate, 通过Strin...

2019-05-06 17:17:33 956

原创 网络延迟,数据库重复插入

在注册用户等操作时,尽管已经在java程序对数据库是否的手机号等字段进行校验,如果已存在改手机号的用户,则将不再进行插入并提升相应信息;但由于网络延时等原因,造成特殊场景下,仍然使得数据库插入相同的重复记录。 如何解决此问题: 1)对某一字段添加唯一索引,如手机号mobile,在插入时如果存在有相同的mobile,则忽略,不会报错; 不存在,则插入。 2)...

2019-05-06 10:25:04 1104

原创 阿里云OSS报错Nosuchkey

1. 根据阿里提供的文档:http://<yourBucketName>.<yourEndpoint>/<yourObjectName>例如:http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg因此我的理解是:objectName ==example以及以下文档:https:/...

2019-04-26 19:38:51 43275 1

原创 连续签到

说明:刚开始需求只是做一个登陆签到,就奖励积分的一个操作;达到设定的连续签到xx天后,就额外增加xx积分奖励;如果中断签到,则连续签到次数将重新计算;后来需求变化,需要增加一个提供补签到的功能。因此,需要提供一个查询计算连续签到的算法。由于需要补签,故需做成日历的形式,可一目了然知道哪些日期未签到,因此需要记录每日签到情况。表设计关键字段如下:-- 签到表CREATE TABL...

2019-04-24 15:56:55 974

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除