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

本文只关于如何输出到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数据,自己要怎么处理就怎么处理,不再赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值