900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > mysql存储过程实例实现查询_Mybatis应用mysql存储过程查询数据实例

mysql存储过程实例实现查询_Mybatis应用mysql存储过程查询数据实例

时间:2018-09-27 00:52:24

相关推荐

mysql存储过程实例实现查询_Mybatis应用mysql存储过程查询数据实例

1.创建mysql存储过程,这是个复杂查询加上了判断,比较复杂

CREATE PROCEDURE searchAllList (

IN tradingAreaId VARCHAR (50),

IN categoryName VARCHAR (100),

IN intelligenceSort TINYINT UNSIGNED,

IN priceBegin DOUBLE,

IN priceEnd DOUBLE,

IN commodityName VARCHAR (200),

IN flag TINYINT UNSIGNED

)

BEGIN

IF flag = 0 THEN

SELECT

B.user_business_id businessId,

B.shop_name,

B.total_score,

B.shop_logo,

B.average_consume,

D.category_name,

B.shop_address

FROM

user_business_commodity A

LEFT JOIN user_business B ON B.user_business_id = A.user_business_id

LEFT JOIN user_business_category C ON C.business_id = B.user_business_id

LEFT JOIN service_category D ON D.category_id = C.category_one_id

WHERE

1 = 1

AND

IF (

categoryName IS NOT NULL

AND LENGTH(TRIM(categoryName)) > 0,

D.category_name = categoryName,

1 = 1

)

AND

IF (

priceBegin != 0,

B.average_consume >= priceBegin,

1 = 1

)

AND

IF (

priceEnd != 0,

B.average_consume <= priceEnd,

1 = 1

)

AND

IF (

commodityName IS NOT NULL

AND LENGTH(TRIM(commodityName)) > 0,

A. NAME LIKE concat('%', commodityName, '%'),

1 = 1

)

AND B.is_delete = 0

AND B.shop_setup_state = 1

AND A.is_delete = 0

AND C.is_delete = 0

AND D.is_delete = 0

GROUP BY

A.user_business_id

ORDER BY

CASE intelligenceSort

WHEN 1 THEN

'B.total_order DESC'

WHEN 2 THEN

'B.total_score DESC'

WHEN 3 THEN

'B.create_time DESC'

ELSE

'B.create_time ASC'

END;

ELSE

SELECT

B.user_business_id businessId,

B.shop_name,

B.total_score,

B.shop_logo,

B.average_consume,

D.category_name,

B.shop_address

FROM

user_business_commodity A

LEFT JOIN user_business B ON B.user_business_id = A.user_business_id

LEFT JOIN user_business_category C ON C.business_id = B.user_business_id

LEFT JOIN service_category D ON D.category_id = C.category_two_id

WHERE

1 = 1

AND

IF (

categoryName IS NOT NULL

AND LENGTH(TRIM(categoryName)) > 0,

D.category_name = categoryName,

1 = 1

)

AND

IF (

priceBegin != 0,

B.average_consume >= priceBegin,

1 = 1

)

AND

IF (

priceEnd != 0,

B.average_consume <= priceEnd,

1 = 1

)

AND

IF (

commodityName IS NOT NULL

AND LENGTH(TRIM(commodityName)) > 0,

A. NAME LIKE concat('%', commodityName, '%'),

1 = 1

)

AND B.is_delete = 0

AND B.shop_setup_state = 1

AND A.is_delete = 0

AND C.is_delete = 0

AND D.is_delete = 0

GROUP BY

A.user_business_id

ORDER BY

CASE intelligenceSort

WHEN 1 THEN

'B.total_order DESC'

WHEN 2 THEN

'B.total_score DESC'

WHEN 3 THEN

'B.create_time DESC'

ELSE

'B.create_time ASC'

END;

END IF;

END;

2.查看存储过程是否创建成功:

show procedure status;

3.sqlMapper文件:

CALL searchAllList(#{tradingAreaId},#{categoryName},#{intelligenceSort},#{priceBegin},#{priceEnd},#{commodityName},#{flag});

其他和直接调用sql语句一样了

以上这篇Mybatis应用mysql存储过程查询数据实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持聚米学院。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。