首页 > 开发 > Java > 正文

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

2024-07-13 10:15:45
字体:
来源:转载
供稿:网友

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)BEGINIF 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文件:

<select id="searchAllList1" parameterMap="searchAllListMap" statementType="CALLABLE" resultType="com.dongjia168.platform.vo.erp.crm.BusinessShopResp">     CALL searchAllList(#{tradingAreaId},#{categoryName},#{intelligenceSort},#{priceBegin},#{priceEnd},#{commodityName},#{flag});   </select> 
<parameterMap id="searchAllListMap" type="com.dongjia168.platform.vo.erp.crm.BusinessShopReq">     <parameter property="tradingAreaId" jdbcType="VARCHAR" mode="IN"/>     <parameter property="categoryName" jdbcType="VARCHAR" mode="IN"/>     <parameter property="intelligenceSort" jdbcType="INTEGER" mode="IN"/>     <parameter property="priceBegin" jdbcType="DOUBLE" mode="IN"/>     <parameter property="priceEnd" jdbcType="DOUBLE" mode="IN"/>     <parameter property="commodityName" jdbcType="VARCHAR" mode="IN"/>     <parameter property="flag" jdbcType="INTEGER" mode="IN"/>   </parameterMap> 

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

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


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表