MySQL转义字符+存储过程的使用
MySQL中大于,大于等于,小于,小于等于的转义写法
一、左边就是原来的符号,右边就是在mybatis中代替的符号
二、如何通过mysql的存储过程创建虚拟表(临时表),并插入1000条数据
这些表通常是用来做数据统计时用到的:比如:查询指定时间段内的每天的数据的总和,
指定时间包括:开始时间:2022-1-1、结束时间:2022-1-30
2022-1-1~2022-1-30,这个时间段内,要求获取每天的数据,但是数据库可能某天是没有数据的,这时,就需要一张有连续id/其他的字段的一张临时表
创建表很简单,插入1000条数据(id连续)具体方式如下(使用存储过程插入数据):
1.创建存储过程p01
点击查看代码
CREATE PROCEDURE p01 ()
BEGIN
declare i int;
set i=1;
while i<=1000 do
INSERT INTO help(id) VALUES (i);
set i=i+1;
end WHILE;
END;
2.呼叫存储过程p01
CALL p01;
3.移除存储过程p01
DROP PROCEDURE p01;
以上三步就可以把1000条数据(id连续)插入数据库了
三、mysql查询指定时间段内的每天的数据,查询语句示例如下:
1.controller层代码
点击查看代码
private HomePageService homePageService;
@Autowired
public void setHomePageService(HomePageService homePageService) {
this.homePageService = homePageService;
}
@GetMapping("/order_home_page")
@ApiOperation("【订单数据统计】")
@ApiImplicitParams({
@ApiImplicitParam(name = "startDate", value = "开始日期", paramType = "query", dataType="Date",defaultValue = "2022-1-1"),
@ApiImplicitParam(name = "overDate", value = "结束日期", paramType = "query", dataType="Date",defaultValue = "2022-1-30")
})
public Result<OrderHomePageVO> orderHomePage(@ApiIgnore @RequestParam Map<String, Object> params){
OrderHomePageVO vo = homePageService.orderHomePage(params);
return new Result<OrderHomePageVO>().ok(vo);
}
2.service层代码
点击查看代码
/**
* 订单数据统计
* @param params
* @return
*/
OrderHomePageVO orderHomePage(Map<String, Object> params);
3.serviceImpl实现类代码
点击查看代码
private HomePageDao homePageDao;
@Autowired
public void setHomePageDao(HomePageDao homePageDao) {
this.homePageDao = homePageDao;
}
@Override
public OrderHomePageVO orderHomePage(Map<String, Object> params) {
OrderHomePageVO orderHomePageVO = new OrderHomePageVO();
//1.查询指定时间段内的订单信息
HomePageVo1 homePageVo1 = new HomePageVo1();
Integer orderTotal=homePageDao.getOrderTotal(params);
List<Map<String,Object>> map=homePageDao.getEveryMap(params);
homePageVo1.setOrderTotal(orderTotal);
homePageVo1.setMap(map);
orderHomePageVO.setHomePageVo1(homePageVo1);
log.info("【订单统计】-1.查询指定时间段内的订单信息"+homePageVo1);
//2.各宾馆的订单数据
List<Map<String,Object>> hotelMap=homePageDao.getHotelMap(params);
orderHomePageVO.setHotelMap(hotelMap);
log.info("【订单统计】-2.各宾馆的订单数据"+hotelMap);
//3.各服务类型订单数据
List<Map<String,Object>> serviceTypeMap=homePageDao.getServiceTypeMap(params);
orderHomePageVO.setServiceTypeMap(serviceTypeMap);
log.info("【订单统计】-3.各服务类型订单数据"+serviceTypeMap);
//4.各房间类型的订单数据
List<Map<String,Object>> roomTypeMap=homePageDao.getRoomTypeMap(params);
orderHomePageVO.setRoomTypeMap(roomTypeMap);
log.info("【订单统计】-4.各房间类型的订单数据"+roomTypeMap);
//5.各服务星级的订单数据
List<WaiterGradeOrderVO> waiterGradeOrderVOList=homePageDao.getWaiterGradeOrderVO();
if (waiterGradeOrderVOList!=null){
for (WaiterGradeOrderVO waiterGradeOrderVO:waiterGradeOrderVOList) {
if (waiterGradeOrderVO.getStarName()!=null){
List<Long> ids=homePageDao.getIds(waiterGradeOrderVO.getStarName());
if (ids!=null){
Integer allTotal=0;
for (Long waiterGradeId:ids) {
List<Long> waiterUserIds=homePageDao.getWaiterUserIds(waiterGradeId);
if (waiterUserIds.isEmpty()){
waiterGradeOrderVO.setTotal(0);
}else {
Integer waiterTotal = homePageDao.getWaiterOrderTotal(waiterUserIds,params);
allTotal=waiterTotal+allTotal;
}
}
waiterGradeOrderVO.setTotal(allTotal);
}
}
}
orderHomePageVO.setWaiterGradeOrderVOList(waiterGradeOrderVOList);
log.info("【订单统计】-5.各服务星级的订单数据"+waiterGradeOrderVOList);
}
return orderHomePageVO;
}
4.dao+XML代码
4.1某时间段内每日的订单统计信息
其中的help表,就是上面提到的临时表(具有连续id的一张表)
点击查看dao代码
/**
* 某时间段内每日的订单统计信息
* @param params
* @return
*/
List<Map<String, Object>> getEveryMap(Map<String, Object> params);
点击查看dao.xml代码
<select id="getEveryMap" resultType="java.util.Map">
select t1.day, ifnull(u1.total, 0) as num from
(
select date_format(date_sub(#{overDate},interval t.id day),'%Y-%m-%d') as day
from help t,
(
select TIMESTAMPDIFF(day,#{startDate}, #{overDate})+1 as subday
) as subdayt
where t.id < subdayt.subday
) as t1 left join
(
select date_format(u.create_date, '%Y-%m-%d') as r_t , count(id) as total from user_order u WHERE u.status=1 group by r_t
) as u1 on u1.r_t = t1.day
ORDER BY t1.day asc
</select>
4.2各宾馆的订单数据
点击查看dao代码
/**
* 各宾馆的订单数据
* @param params
* @return
*/
List<Map<String, Object>> getHotelMap(Map<String, Object> params);
点击查看dao.xml代码
<select id="getHotelMap" resultType="java.util.Map">
SELECT
A.hotel_name hotelName,
IFNULL((SELECT COUNT(id) FROM user_order WHERE status=1 AND hotel_id=A.id AND create_date between #{startDate} AND #{overDate}),0) total
FROM
hotel A
WHERE
A.status = 1
GROUP BY
A.hotel_name
</select>
以上,举了两个示例,后续有新的需求,及时补充,在这里记录一下,拜拜~
MySQL转义字符+存储过程的使用的更多相关文章
- Mysql之存储过程与存储函数
1 存储过程 1.1 什么是存储过程 存储过程是一组为了完成某项特定功能的sql语句集,其实质上就是一段存储在数据库中的代码,他可以由声明式的sql语句(如CREATE,UPDATE,SELECT等语 ...
- MYSQL中存储过程的创建,调用及语法
MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库 ...
- MYSQL分页存储过程及事务处理
最近给客户做的一小系统是SQLSERVER的数据库,因为特殊原因要切换到MYSQL上去,切换数据库确实让人头疼的,SQLSERVER和MYSQL的存储过程还是有很大差别的,下面是我做切换时转换的MYS ...
- mysql之存储过程
一.存储过程 迄今为止,使用的大多数 SQL语句都是针对一个或多个表的单条语句.并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成.例如,考虑以下的情形. 1. ...
- MySQL的存储过程1
来源:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html MySQL的存储过程 2. 关于MySQL的存储过程存储过程是数据库存储的一个重要的功能 ...
- mysql 转义字符和php addslashes
遇到一个很奇怪的问题,json数据中含有中文: "mail":{"title":"\u6218\u529b\u8fbe\u4eba\u6d3b\u52 ...
- Mysql的存储过程(以Mysql为例进行讲解)
我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储 在数据库中,用户通过指定存 ...
- mysql之——存储过程 + 游标 + 事务
下面是自己曾经编写过的mysql数据库存储过程,留作存档,以后用到的时候拿来参考. 其中,涉及到了存储过程.游标(双层循环).事务. [说明]:代码中的注释只针对当时业务而言,无须理会. 代码如下: ...
- MYSQL:基础—存储过程
MYSQL:基础-存储过程 快速入门 理解: 迄今为止,我们学过的大多数SQL语句都是针对一个或多个表的单条语句.但是并不是所有的操作都是可以用一条语句来完成的,经常有一些操作是需要多条语句配合才能完 ...
- MySQL笔记 存储过程 游标 触发器
第二十三章 使用存储过程 MySQL5 中添加了存储过程的支持. 大多数SQL语句都是针对一个或多个表的单条语句.并非所有的操作都怎么简单.经常会有一个完整的操作需要多条才能完成 存储过程简单来说,就 ...
随机推荐
- Python实现给图片加水印功能
前言 最近忙得连轴转,很久没更新博客了,代码倒是没啥写,积累了好些东西,接下来一有时间就来更新吧~ 本文记录使用Python实现给图片添加水印的功能实现过程 先看效果 把公众号的封面作为素材 原图是这 ...
- 手把手教你玩转 Gitea|使用 Docker 安装 Gitea
使用 Docker 安装 Gitea 的过程非常简单的,堪比"一键式"安装.Gitea 安装使用系列教程将会从多种方式进行全方位的实操演示. 视频演示中使用腾讯云实验环境安装 Do ...
- Tubian系统无法打开Android子系统的解决方法
打开Konsole,Konsole在程序菜单(左下角Logo)-系统中 输入: sudo nano /var/lib/waydroid/waydroid.cfg 回车 按方向键,把光标移动到[prop ...
- C# 内存泄漏之 Internal 关键词代表什么?
一:背景 1. 背景 前段时间有位朋友咨询说他的程序出现了非托管内存泄漏,说里面有很多的 HEAP_BLOCK 都被标记成了 Internal 状态,而且 size 都很大, 让我帮忙看下怎么回事? ...
- PHP全栈开发(五):PHP学习(1.基础语法)
PHP脚本在服务器上执行,然后将纯HTML的结果返回给浏览器. 听上去很厉害的样子,所以说PHP是服务器端的语言啦.HTML才是前端啦. PHP文件的默认文件扩展名是".php" ...
- Activiti7基本介绍
官方地址 官方地址 官方最新用户文档-V6.0.0 码云镜像-activiti-7-developers-guide 关于BPMN BPMN(Business Process Model AndNot ...
- oracle 12C 《服务器、客户端安装》
oracle 12C <服务器.客户端安装> 1.下载database和client database和client下载地址:http://www.oracle.com/technetwo ...
- 齐博x1标签之异步加载标签数据
为什么要异步加载标签?他有什么好处 如果一个页面的标签太多,又或者是页面中某一个标签调用数据太慢的话,就会拖慢整个页面的打开,非常影响用户体验.这个时候,用异步加载的话,就可以一块一块的显示,用户体验 ...
- 人生苦短,我用 python 之入门篇
Python 是一种跨平台的,开源的,免费的,解释型的高级编程语言,它具有丰富和强大的库,其应用领域也非常广泛,在 web 编程/图形处理/黑客编程/大数据处理/网络爬虫和科学计算等领域都能找到其身影 ...
- 网页状态码(HTTP状态码)。
网页状态码(HTTP状态码). 状态码 说明 详情 100 继续 请求者应当继续提出请求.服务器已收到请求的一部分,正在等待其余部分. 101 切换协议 请求者已要求服务器切换协议,服务器已确认并准备 ...