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

 更新时间:2017年12月31日 15:10:07   作者:Pionner17  
下面小编就为大家分享一篇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文件:

<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存储过程查询数据实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • IDEA启动Tomcat时控制台出现乱码问题及解决

    IDEA启动Tomcat时控制台出现乱码问题及解决

    这篇文章主要介绍了IDEA启动Tomcat时控制台出现乱码问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • java基于NIO实现群聊模式

    java基于NIO实现群聊模式

    这篇文章主要为大家详细介绍了java实现NIO实现群聊模式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 单点登录的概念及SpringBoot实现单点登录的操作方法

    单点登录的概念及SpringBoot实现单点登录的操作方法

    在本文中,我们将使用Spring Boot构建一个基本的单点登录系统,我们将介绍如何使用Spring Security和JSON Web Tokens(JWTs)来实现单点登录功能,本文假设您已经熟悉Spring Boot和Spring Security,感兴趣的朋友一起看看吧
    2024-10-10
  • Java调用WebService接口作测试

    Java调用WebService接口作测试

    这篇文章主要介绍了Java调用WebService接口作测试,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 如何使用Resttemplate和Ribbon调用Eureka实现负载均衡

    如何使用Resttemplate和Ribbon调用Eureka实现负载均衡

    这篇文章主要介绍了如何使用Resttemplate和Ribbon调用Eureka实现负载均衡,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • IDEA配置Tomcat后,控制台tomcat catalina log出现乱码问题

    IDEA配置Tomcat后,控制台tomcat catalina log出现乱码问题

    本文介绍了如何通过设置Tomcat和IDEA的编码格式来解决编码问题,首先尝试修改Tomcat的logging.properties文件中的编码设置,如果未解决问题,则调整IDEA的编码设置,通过修改vmoptions文件来全局设置IDEA的编码格式,作者分享了个人成功解决问题的方法和步骤,供其他开发者参考
    2024-09-09
  • 浅析Java中对象的创建与对象的数据类型转换

    浅析Java中对象的创建与对象的数据类型转换

    这篇文章主要介绍了Java中对象的创建与对象的数据类型转换,是Java入门学习中的基础知识,需要的朋友可以参考下
    2016-01-01
  • 浅谈Java实现回溯算法之八皇后问题

    浅谈Java实现回溯算法之八皇后问题

    八皇后问题是一个古老而又著名的问题,是学习回溯算法的一个经典案例。今天我们就一起来探究一下吧
    2021-06-06
  • RabbitMQ下载与安装教程

    RabbitMQ下载与安装教程

    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件),这篇文章给大家介绍RabbitMQ下载与安装教程,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • Mybatis控制台打印SQL执行信息的方法详解

    Mybatis控制台打印SQL执行信息的方法详解

    SQL性能监控是一个程序必要的功能,通常我们可以使用数据库自带的客户端工具进行SQL性能分析,本章节只实现Mybatis执行时对执行SQL进行拦截,控制台打印执行SQL包括参数、执行方法以及执行时间,需要的朋友可以参考下
    2024-11-11

最新评论