mysql group_concat 的分组,以及输出到Java的String

来源:互联网 发布:淘宝秒杀需要刷新 编辑:程序博客网 时间:2024/05/21 10:14

本文只关于如何输出到java,不涉及数据库连接,bean类创建使用的教学。需要完整java连接数据库,到用bean取出数据的,自行度娘搜索。
这里写图片描述
结果如下(部分,字段太多,截不全,下图为失败案例。):
这里写图片描述

关于mysql怎么用group_concat 分组,网上有很多教程,这里不再赘述。
假设我们拥有以上数据,这个时候需要对颜色分组。以goodsId=1002为例。
sql语句:

String sql ="SELECT serialNumber,goodsId,fatherGoodsId,"+"GROUP_CONCAT(goodsCode) goodsCode,color,GROUP_CONCAT(CONVERT(size,char)) size,"   +"GROUP_CONCAT(CONVERT(stock,char)) stock,"+"GROUP_CONCAT(CONVERT(price,char)) price FROM  goods_tb WHERE goodsId=1002 group by color";

验证一下语句正不正确:
这里写图片描述
上图正确。其中goodsCode字段错误,作为参考对比。不过本身没数据,在这里也无所谓。

假设有 searchSql 方法(自己实现),可以查询sql语句并返回List列表。
首先要有一个bean去接收。

public class GoodsBean{    /*如果数据库字段类型为bigint,要对应为java的bigint,注意需要设置为无符号,否则要对应java Long类型*/    private BigInteger serialNumber;    private String color;    private int goodsId;    private int fatherGoodsId;    private String goodsCode;    private String size;    private String stock;    private String price;//因为不是单个输出,是集合输出,所以字段price的decimal在bean里变成String去获得集合。    //set和get自己生成。

开始用searchSql函数。

List<GoodsBean> goodsBean =new ArrayList<GoodsBean>();goodsBean = (List<GoodsBean>) searchSql(sql);

其实本文重点在于
GROUP_CONCAT(CONVERT(size,char)) size 类似这样的句子。

之前我不会用这个sql函数,一直是类似这么用的
GROUP_CONCAT(CONVERT(size,char)),就是第三张图显示的GROUP_CONCAT(goodsCode)字段效果,不过有数据,不能获取到。网上说是Blob类型获取。不得而知。没试过。
这样的结果导致对应到bean的size变量一直为空,也就是取不到数据。就是第二张图显示的,没有size字段。只有GROUP_CONCAT(CONVERT(size,char))字段

正确用法是
GROUP_CONCAT(CONVERT(size,char)) size
在命令窗口输出,会包含GROUP_CONCAT(CONVERT(size,char)) 和size两个字段。
如果java获取。反正前者我获取不到数据。size对应bean里的String size;是字符串。
group by color 这句也是很重要的,没有这句,就没有分组的依据。只会输出一个颜色。并且会把符合条件的其他颜色的记录 全部加到那个颜色上。

CONVERT,CAST用法,度娘。
最后拿到的String数据,自己要怎么处理就怎么处理,不再赘述。

阅读全文
0 0
原创粉丝点击