Mybatis应用mysql存储过程查询数据实例
2017-12-31 15:10
741 查看
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存储过程查询数据实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- Mybatis应用mysql存储过程查询数据
- MySQL存储过程实例——实现查询数据表,有则更新无则插入
- MySQL 存储过程实例 与 ibatis/mybatis/hibernate/jdbc 如何调用存储过程
- mysql数据存储过程应用
- mysql数据存储过程参数实例详解
- spring多数据源的处理 mybatis实现跨库查询 实现Myibatis动态sql跨数据库的处理 Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样
- MyBatis,MySql存储过程分页查询
- mysql 百万数据存储过程 查询优化技巧
- JDBC基于MVC架构项目实例-实现对MySQL数据表的增删改查、调用数据表中的存储过程和函数
- mysql数据存储过程参数实例详解
- MYSQL 查询包含某个数据表的所有存储过程
- mybatis mysql 关于调用存储过程获取查询结果
- mysql 百万数据存储过程 查询优化技巧
- 利用Spring MVC+Mybatis实现Mysql分页数据查询的过程详解
- 存储过程写入大批量数据,用于测试mysql查询优化
- Mysql存储过程实例
- MySql 按时间段查询数据方法(实例说明)
- SQL Server常用的系统存储过程应用实例
- MySQL存储过程实例
- Sql语句与存储过程查询数据的性能测试实现代码