JAVA中mysql多个条件怎么模糊查询_java - mysql中模糊查询的应用问题?

java - mysql中模糊查询的应用问题?

d53b6ceed3a48170b5b7624cd335d950.png

大家讲道理2017-04-18 09:46:40 0 4 80

首先来一下代码

StringBuffer sql = new StringBuffer();

sql.append("select");

sql.append(" f.id,");

sql.append(" f.foodName,");

sql.append(" f.price,");

sql.append(" f.mprice,");

sql.append(" f.intro,");

sql.append(" f.img,");

sql.append(" t.id,");

sql.append(" t.typeName ");

sql.append("from ");

sql.append(" OS_foodInfo f, ");

sql.append(" OS_foodType t ");

sql.append("where 1=1");

sql.append(" and f.foodType_id=t.id ");

List list = new ArrayList();

if (foodType_id > 0) {

sql.append("and f.foodType_id = ? ");

list.add(foodType_id);

}

if (foodName != null && !"".equals(foodName.trim())) {

sql.append("and f.foodName like '%");

sql.append("?");

sql.append("%' ");

list.add(foodName);

}

sql.append("limit ?,?");

然后来运行后的错误

java.sql.SQLException: Wrong number of parameters: expected 3, was given 4 Query: select f.id, f.foodName, f.price, f.mprice, f.intro, f.img, t.id, t.typeName from OS_foodInfo f, OS_foodType t where 1=1 and f.foodType_id=t.id and f.foodType_id = ? and f.foodName like '%?%' limit ?,? Parameters: [1, 虾, 0, 6]

是模糊拼接有问题吗?

89758.html

回答

4

0

分享

全部回复 (4)

745f357dd10d7eefd598e7737aeaad65.png

阿神2017-04-18 09:48:404楼

三个问号你给了四个参数

89758.html

回复47d507a036d4dd65488c445c0974b649.png

巴扎黑2017-04-18 09:48:403楼

你输出一下拼接的 sql 字符串不就能发现了么

89758.html

回复deb71f33f384d0545d8176f741fdfbc4.png

PHPzhong2017-04-18 09:48:402楼

很明显,是你SQL错误啊。f.foodType_id = f.id AND f.foodType_id = 1 ?

SELECT

f.id,

f.foodName,

f.price,

f.mprice,

f.intro,

f.img,

t.id,

t.typeName

FROM

OS_foodInfo f,

OS_foodType t

WHERE

1 = 1

AND f.foodType_id = t.id

AND f.foodType_id = 1

AND f.foodName LIKE '%虾%'

LIMIT 0,6

89758.html

回复86e6b7d6f95c31139ee840748d3c5dad.png

伊谢尔伦2017-04-18 09:48:401楼

为什么不用mybatis框架,还用这种蛋疼的方式拼sql

89758.html

回复

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值