Jfinal mysql GROUP_CONCAT 问题

开源中国首席打酱油啊哎滴 发布于 2015/04/27 16:08
阅读 456
收藏 0

【领华为电脑包】容器化时代到来!跳转机分配问题终于“有救”了!>>>

——————————————已解决————————————————

写sql传参的时候用了in (?) ,然后find(sql,id),这样会导致逗号分割的字符串只传入第一个

用".... in ("+id+")" 解决

————————————————————————————————

我用jfinal查询 一个表的数据,根据几个id把名字GROUP_CONCAT在一起

表结构 


id name phone
1 张三 110
2 李四 119

查询语句
select GROUP_CONCAT(name,phone) as info from users where id  in (1,2)

在mysql查询工具中是可以得到预期结果的,但是在jfinal中,只能得到第一行的了两个字段拼接结果

求解答

加载中
1
ohaozy
ohaozy

我测试了下两种都正常。

String s = Db.findFirst("select GROUP_CONCAT(name,idcard) as info  from userinfo where id  in (60,61)").getStr("info");

System.out.println(s);

String s = Db.queryStr("select GROUP_CONCAT(name,idcard) as info  from userinfo where id  in (60,61)");
System.out.println(s);
估计有mysql驱动或者数据库版本原因,我的环境是mysql5.5,驱动是:mysql-connector-java-5.1.20-bin.jar你可以换驱动和数据库版本测试一下,我也好奇具体是什么原因。

开源中国首席打酱油啊哎滴
开源中国首席打酱油啊哎滴
谢谢,已经解决了。是 in(?) 传参的时候只传了一个,我换成字符串拼接就好了。
0
JFinal
JFinal
     具体代码是什么样的? 是用query 方法吗: Db.query("select GROUP_CONCAT(name, phone) as info from users where id in(1,2)")
开源中国首席打酱油啊哎滴
开源中国首席打酱油啊哎滴
发现问题原因了,是因为我用 in (?) ,然后Db.query(sql,ids)这样传参,进去的只有第一个。。。
开源中国首席打酱油啊哎滴
开源中国首席打酱油啊哎滴
我是用的Db.queryStr,也试过findFirst,因为就一条记录,不想再去Controller处理了,是不是这个的原因。
返回顶部
顶部