mysql中去重 distinct 用法

在使用mysql时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段,例如有如下表user: 用distinct来返回不重复的用户名:select distinct name from user;,结果为: 这样只把不重复的用户名查询出来了,但是用户的id,并没有被查询出来:select distinct name,id from user;,这样的结果为: distinct name,id 这样的mysql 会认为要过滤掉name和id两个字段都重复的记录,如果sql这样写:select id,distinct name from user,这样mysql会报错,因为distinct必须放在要查询字段的开头。 所以一般distinct用来查询不重复记录的条数。 如果要查询不重复的记录,有时候可以用group by : select id,name from user group by name;   from:https://www.cnblogs.com/lxwphp/p/11339949.html

龙生   17 Nov 2020
View Details

MYSQL把查询多个的结果用逗号隔开,放在一个列里

mysql关键字:GROUP_CONCAT select name from 表1 t1 INNER JOIN 表2 t2 on t1.id=t2.word_id(关联字段) 结果: 2.select GROUP_CONCAT(name) from word t1 INNER JOIN relation_word_customer t2 on t1.id=t2.word_id 结果   from:https://blog.csdn.net/my_sweetxue/article/details/106380267

龙生   17 Nov 2020
View Details

Mixed Content: The page at 'xxx' was loaded over HTTPS, but requested an insecure resource 'xxx'.

HTTPS页面里动态的引入HTTP资源,比如引入一个js文件,会被直接block掉的.在HTTPS页面里通过AJAX的方式请求HTTP资源,也会被直接block掉的。 Mixed Content: The page at 'xxx' was loaded over HTTPS, but requested an insecure resource 'xxx'. This request has been blocked; the content must be served over HTTPS. 解决办法: 页面的head中加入: <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> 意思是自动将http的不安全请求升级为https   from:https://www.cnblogs.com/cici1989/p/11229810.html

龙生   17 Nov 2020
View Details

解决IDEA gradle项目执行main方法时自动运行gradle task问题

使用IDEA创建gradle项目后,执行main方法时会自动运行gradle的一些build task,导致启动很慢,如下图: 解决方法: 打开设置页面,进行如下修改:   from:https://zhoujun.blog.csdn.net/article/details/103372893

龙生   16 Nov 2020
View Details

DO-DTO相互转换时的性能优化

一般情况下,DO是用来映射数据库记录的实体类,DTO是用来在网络上传输的实体类。两者的不同除了适用场景不同外还有就是DTO需要实现序列化接口。从DB查询到数据之后,ORM框架会把数据转换成DO对象,通常我们需要再把DO对象转换为DTO对象。同样的,插入数据到DB之前需要将DTO对象转换为DO对象然后交给ORM框架去执行JDBC。 通常用到的转换工具类BeanUtils是通过反射来实现的,实现源码如下

  也可以通过mapstruct来实现,这种方式是在Mapper接口的包中生成一个对应mapper的实现类,实现类的源码如下。显然这种方式的实现更为普通,看起来没有BeanUtils的实现那么复杂。不过BeanUtils通过反射实现更为通用,可以为各种类型的DTO实现转换。而mapstruct只是帮我们生产了我们不想写的代码。

  对比以上两种方式,显然使用BeanUtils来进行转换时需要写的代码更少,内部的通过反射便可以进行get/set操作。而mapstruct实现上需要写的代码稍微多一点,但是这种方式的性能比通过反射实现更好。下面写一段代码来测试两种方式实现的性能差别。

  以上测试代码中分别使用两种方式对同一个DO对象进行n次转换,两次转换的耗时统计如下。单位:ms 次数 1 10 100 1000 10000 100000 1000000 10000000 Mapstruct 0 1 1 1 2 4 8 8 BeanUtil 9 7 11 26 114 500 1469 14586 可见当转换数量级增加时,使用BeanUtil的耗时急剧上升,而使用Mapstruct的耗时则保持在比较低的水平。 在一个系统中,ORM对DB的各种操作几乎都会涉及到DO和DTO之间的转换,参考以上表格的统计结果,更推荐使用Mapstruct。   from:https://www.cnblogs.com/umgsai/p/8570652.html

龙生   16 Nov 2020
View Details

Java中的DO、TO、DTO、DAO等含义

1、PO即persistant Object 持久对象: 在O/R 映射(即ORM-ObjectRelationMapping)中出现的概念,通常对应数据模型(数据库),是与数据库汇总的表想影射的java对象,最简单的PO就是对应数据库中某个表中的一条记录,多个记录则用PO的集合。PO中不应该包含任何对数据库的操作。 2、DO即Domain Object 领域对象: 是从现实世界中抽象出来的有形或无形的业务实体。 3、TO即Transfer Object数据传输对象: 不同应用程序之间传输的对象 4、DTO即Data Transfer Object:数据传输对象: 泛指用于展示层与服务层之间的数据传输对象 5、VO即value Object: 通常用于业务层之间的数据传递,和PO一样仅包含数据,但是抽象出的业务对象,可以和表对应,用new 关键字创建,GC回收 6、BO即Business Object 业务对象: 主要是将业务逻辑封装为一个对象,这个对象可以包含一个或多个其他对象,如一个简历中包含教育经历、工作经历、社会关系等,可以将一个教育经历对应一个PO、工作经历对应一个PO、设计关系对应一个PO,然后简历一个对应简历的BO兑现处理简历,每个BO包含这个PO这样处理业务逻辑是,可以针对BO去处理。封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。 7、POJO即Plain Ordinary Java Object: 简单无规则的java对性,即在一些O/R 映射工具中,能做到维护数据库表记录的PO完全是一个符合Java Bean规范的纯java对象   from:https://blog.csdn.net/weixin_44122921/article/details/85038513

龙生   16 Nov 2020
View Details

解决 fastjson toJSON方法日期类型字段 由时间戳转换成自定义类型格式的问题 JSON.toJSONStringWithDateFormat

将map集合转为json对象时遇到一个问题。map中 updateTime的value为日期格式如"2001-01-01",在使用  JSONObject.toJSON(map).toString() 的时候,   得到的结果 updateTime 的值为 时间戳 解决方法: 使用fastjson 的 JSON.toJSONStringWithDateFormat(Object,dateformat,SerializerFeature.WriteDateUseDateFormat) 方法即可将时间戳转换为自定义格式类型的值   from:https://blog.csdn.net/qq_39564789/article/details/105176845

龙生   11 Nov 2020
View Details

CentOS7 离线安装MySQL

1.删除原有的mariadb 不然安装报错

2. 下载RPM安装包 在https://dev.mysql.com/downloads/mysql/选择为Red Hat Enterprise Linux 7 / Oracle Linux 7 ,把os的版本选择为all。 直接下载mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar,所有的rpm包都在里面,然后rpm命令安装。

至此,mysql5.7所有文件安装完毕,接下来就是开启服务测试了 3. 启动mysql服务 查看mysql服务是否启动

启动服务:

4. 重置root密码 MySQL5.7会在安装后为root用户生成一个随机密码,而不是像以往版本的空密码。 可以安全模式修改root登录密码或者用随机密码登录修改密码。下面用随机密码方式 MySQL为root用户生成的随机密码通过mysqld.log文件可以查找到:  

  5. 修改root用户密码 (MySQL的密码策略比较复杂,过于简单的密码会被拒绝)

6. 用root新密码登录

如果上面的方式不能修改可以使用下面安全模式修改root: 关闭服务,修改mysql配置文件:

mysqld下面添加skip-grant-tables 保存退出启动服务。

再次登录即可

如果进行操作出现下面的提示:

就重新设置密码(mysql默认密码策略比较复杂,如果设置简单密码,需修改默认安全策略,可以参考另外一篇文章:MYSQL57密码策略修改)

7.开放3306端口

开启防火墙mysql 3306端口的外部访问:

  from:https://www.cnblogs.com/mymelody/p/9253551.html

龙生   11 Nov 2020
View Details

centos7下使用mysql离线安装包安装mysql5.7

服务器环境: centos7 x64 需要安装mysql5.7+ 一、卸载CentOS7系统自带mariadb

二、检查mysql是否存在

三、查看用户和组是否存在 1)检查mysql组合用户是否存在

# 查询全部用户(只是做记录,没必要执行)

2)若不存在,则创建mysql组和用户

四、下载mysql离线安装包tar文件 官网下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 版本选择,可以选择一下两种方式: 1)使用Red Hat Enterprise Linux Select Version:5.7.25 Select Operating System:Red Hat Enterprise Linux / Oracle Linux Select OS Version:Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit) 列表中下载: Compressed TAR Archive:(mysql-5.7.25-el7-x86_64.tar.gz) 2)使用Linux – Generic Select Version:5.7.25 Select Operating System:Linux – Generic Select OS Version:Linux – Generic (glibc 2.12) (x86, 64-bit) 列表中下载: Compressed TAR Archive:(mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz)【本文中使用的是这个版本】 注意:上边两种方式找mysql离线安装包的方式都可以。 五、上传第四步下载的mysql TAR包

六、更改所属的组和用户

七、在/etc下创建my.cnf文件

八、进入mysql文件夹,并安装mysql

设置文件及目录权限:

九、启动mysql

出现错误,解决方案如下: […]

龙生   11 Nov 2020
View Details

JAVA中使用alibaba fastjson实现JSONObject、Object、Json字符串的转换

Object转JSON字符串: String jsonStr = JSONObject.toJSONString(object); JSON字符串转JSONObject: JSONObject jsonObject = JSONObject.parseObject(jsonStr); JSON字符串转Object对象 T t = JSON.parseObject(jsonStr,T.class); —–注:JSON字符串是有格式要求的,必须为键值对形式,不是任意的字符串。—– ——————— 作者:KnifeBlade 来源:CSDN 原文:https://blog.csdn.net/qq_29468573/article/details/82190005

龙生   11 Nov 2020
View Details
1 105 106 107 410