mysql默认值
时穷节乃见,一一垂丹青。一一文天祥
如果我们在编写SQL时需要给一个默认值,例如查询或者编辑的时候,可以使用mysql函数IFNULL
例如这里我们表内有两条数据
然后我们编写SQL,如果我们用户名为null,我们默认填充一个unknown
SELECT id,IFNULL(username,'unknown') username FROM `user`
在编辑的时候也可以用
UPDATE user set username = IFNULL(`username`,'achao') where id = 2
这里如果我们的username为null,就会被修改成achao,但如果已经有值了,则不会进行修改
mybatis-plus两个limit坑
要成就大事业就要趁青年时代。 ——歌德
前两天遇到一个坑,使用mybatis-plus的时候,SQL出现两个LIMIT
经过查阅官方文档才发现,这是因为配置了两个分页拦截器
经过检查,果然发现两个
然后我去掉一个后就解决了
经过这次BUG,我总结出用别人的框架/组件,一定要多阅读官方文档,这样才不会踩了坑也不知道怎么办
RoboPOJOGenerator
我不要剧烈的快乐……取而代之亦没有深刻的绝望……追求植物一样的人生,过着平静的生活,这才是我的目标…… ——吉良吉影
这个插件可以帮助我们把JSON转换为Java的POJO,非常方便
我们搜索插件
点击install
我们可以直接在新建的时候选Generate POJO from JSON
然后填入JSON,右边还可以选择使用哪个转换库,以及是否生成getter&setter,下面Root object name指定类名
点击Generate后
可以看到我们的类已经生成
apache的Http请求
天地英雄气,千秋尚凛然。一一刘禹锡
我们的Springboot已经为我们引用了依赖
但我们还需要一个
<!-- apache http前置依赖 --><dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-servlet</artifactId> <version>1.19</version></dependency>
首先是一个GET请求
我们接口使用@RequestParam接参,所以请求格式应该是http://127.0.0.1:8080/user/say?word=xxx这样的
代码如下
// 指定url和参数,可以在queryParam后继续追加参数HttpGet request = new HttpGet(UriBuilder.fromUri("http://127.0.0.1:8080/user/say").queryParam(&qu ...
toMap(二)
一切的美德都包含在自我信赖里。——爱默森
今天继续聊聊Stream中Jdk8已经为我们封装好的这个Collectors.toMap
前两天写的List to Map工具类是为了解决key重复问题
实际上我们可以用Collectors.toMap的重载直接解决,例如
List<User> userList = new ArrayList<>(10); Map<Integer, User> userMap = userList.stream().collect(Collectors.toMap(User::getId, Function.identity(), (user1, user2) -> user2));
我们在toMap的第三个参数给定,这里我们直接返回user2,意思是如果遇到重复的key[例如这里的userId重复],我们使用第二个user,也就是后者去覆盖前者
除了这点,我们还可以看到一个包含四个参数的重载
这里第四个参数是用于返回指定的map使用的
例如我们需要返回一个LinkedHashMap
就可以这样写 ...
Gson基本使用
世间的很多事物,追求时候的兴致总是要比享用的时候的兴致浓烈。——莎士比亚《威尼斯商人》
首先是GAV
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --><dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version></dependency>
然后是API文档
最后是使用,这里直接分享一篇不错的博客啦,原文
Gson是谷歌官方推出的支持 JSON -- Java Object 相互转换的 Java序列化/反序列化 库,之前由于没有用过,所以学习一下。
1. 导入Android Studio工程dependencies { implementation 'com.google.code.gson:g ...
virtualbox+centos8安装
惟有悲观净化而成的乐观,才是真正的乐观。——尼采
首先是下载
然后是安装
一直下一步就行了
这里点击安装
然后去下载centos8的镜像
访问阿里云镜像地址
选这个就好
然后我们打开virtualBox点击新建
输入名称、选择类型和版本点击下一步
然后分配内存
选择现在创建虚拟硬盘
直接下一步
下一步
然后酌情选择虚拟硬盘大小
然后点击设置
找到储存,点击没有盘片,然后点击右边的光盘,选择虚拟盘
选择我们刚才下载的ISO镜像,点击打开
点击OK后我们启动虚拟机
点击显示即可操作
当然,上面选择正常启动也是一样的效果
稍加等待,选择中文
这个时候我们是没联网的状态,我们在外面打开虚拟机设置,选择网络,设置为桥接并选择你的网卡
点击OK后我们找到网络和主机名
点击打开,然后完成
选择安装目的地,然后点击完成
选择安装源
然后输入
mirrors.aliyun.com/centos/8/BaseOS/x86_64/os
点击完成
然后点击软件选择
选择最小安装
点击完成后,在外面选择根密码设置root密码
设置完毕后点击开始安装
安 ...
mabatisLogFormat
强本而节用,则天不能贫。——荀况
我们在打印sql日志的时候发现参数和sql是分开的,如果我们需要完整的sql,需要手动填充参数到sql上
所以这里介绍一款idea插件:MybatisLogFormat
我们点击install然后重启idea
我们可以选中我们的SQL日志然后右键选择MybatisLogFormat
然后右边就会弹出我们填充好的SQL
我们可以点击copy复制出来
SELECT * FROM user WHERE username LIKE CONCAT('%','ruben','%')
安卓禁止屏幕截图
讲述生活则声音没有不和谐的。——英国诗人柯尔律治
只需要一行代码即可
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
然后打开APP,在当前activity就没法截图了
自定义list To HashMap工具类
没有比正直更富的遗产。——莎士比亚
我们在使用JDK自带的Collectors.toMap时,可能会遇到如下问题(什么?你不知道toMap干嘛的?戳我了解):
1.key重复,出现java.lang.IllegalStateException: Duplicate key ***异常
例如:
List<User> users = new ArrayList<>(Arrays.asList(new User(null, "HiNo"), new User(null, "SuPa")));Map<String, String> map = users.stream().collect(Collectors.toMap(User::getUsername, User::getPassword));
2.value为空,出现NPE: java.lang.NullPointerException
例如:
List<User> users = new ArrayList<>(Arrays.as ...