MyBatis

基于SpringMVC+Spring+MyBatis实现秒杀系统【业务逻辑】

人盡茶涼 提交于 2020-04-28 22:38:03
前言 该篇主要实现秒杀业务层,秒杀业务逻辑里主要包括暴露秒杀接口地址、实现秒杀业务逻辑。同时声明了三个业务类:Exposer、SeckillExecution、SeckillResult。 Exposer主要用来实现暴露接口时一个md5的加密,防止用户在客户端篡改数据。根据seckillid生成md5,提交秒杀请求时会根据这个md5和seckillid比对是否是合法的请求。SeckillExecution主要封装秒杀时的返回值。 SeckillExecution有2个属性,state、stateinfo,这里我没有封装枚举值,还是用整型和字符串给客户端传值,在Service里看着也直观些。 准备工作 1、spring-service.xml 业务逻辑里的关键是开启事务,这里推荐用注解的方式实现。 <? xml version="1.0" encoding="UTF-8" ?> < beans xmlns ="http://www.springframework.org/schema/beans" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xmlns:context ="http://www.springframework.org/schema/context" xmlns:tx ="http://www

MyBatis 二级缓存实现详解及使用注意事项

大憨熊 提交于 2020-04-28 22:18:52
二级缓存介绍 在上文中提到的一级缓存中,其最大的共享范围就是一个SqlSession内部,如果多个SqlSession之间需要共享缓存,则需要使用到二级缓存。开启二级缓存后,会使用CachingExecutor装饰Executor,进入一级缓存的查询流程前,先在CachingExecutor进行二级缓存的查询,具体的工作流程如下所示。 二级缓存开启后,同一个namespace下的所有操作语句,都影响着同一个Cache,即二级缓存被多个SqlSession共享,是一个全局的变量。 当开启缓存后,数据的查询执行的流程就是 二级缓存 -> 一级缓存 -> 数据库。 二级缓存配置 要正确的使用二级缓存,需完成如下配置的。 首先,在MyBatis的配置文件中开启二级缓存。 <setting name="cacheEnabled" value="true"/> 然后,在MyBatis的 Mapper XML 中加入 cache 或者 cache-ref 标签。 cache标签用于声明这个namespace需要使用二级缓存,并且可以自定义配置。 <cache/> type :cache使用的类型,默认是 PerpetualCache ,这在一级缓存中提到过。 eviction : 定义回收的策略,常见的有FIFO,LRU。 flushInterval : 配置一定时间自动刷新缓存,单位是毫秒。

基于SpringMVC+Spring+MyBatis实现秒杀系统【概况】

偶尔善良 提交于 2020-04-28 22:05:01
前言 本教程使用SpringMVC+Spring+MyBatis+MySQL实现一个秒杀系统。教程素材来自慕课网视频教程【https://www.imooc.com/learn/631】。有感兴趣的可以直接看慕课网视频,老师讲的不错,整个系统设计思路也很清晰。本文是我学习Spring时的一手资料,这篇文章先来看看概况,后续会分三篇文章分别介绍:底层Dao接口、Service接口、前端交互。 前台页面用到了Bootstrap提供的结构来实现页面。 系统设计 涉及到的知识点:MySQL、SpringMVC、Spring、MyBatis、jsp、jstl。数据库连接池用的c3p0,日志用的logback。 我在本地开发时数据库装在CentOS7里。编码在windows里做。 概况 开篇主要想分享下学习的一点点感悟,仅仅是一点点感悟,视频看了两遍,觉的老师在前台交互方面的设计思路比较独到,而且讲解比较清晰,比如在页面里先暴漏秒杀地址、倒计时显示秒杀活动开始时间、【ajax】请求时把业务参数直接放在路径里、用模态对话框模拟用户登录。 视频在编写程序的同时还给你提醒什么地方我们应该查询官方文档。查询官方文档配置xml的同时还要搞清楚这个配置背后都做了那些工作,比如spring-web.xml中<mvc:annotation-driven/>都做了那些工作

SpringBoot整合系列-整合MyBatis

北战南征 提交于 2020-04-28 21:49:50
原创作品,可以转载,但是请标注出处地址: https://www.cnblogs.com/V1haoge/p/9971036.html SpringBoot整合Mybatis 步骤 第一步:添加必要的jar包 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> 第二步:添加必要的配置 application.properties ##配置数据源 spring.datasource.url = jdbc:h2:mem:dbtest spring.datasource.username = sa spring.datasource.password = sa spring.datasource.driverClassName =org.h2.Driver 第三步:添加配置类 // 该配置类用于配置自动扫描器,用于扫描自定义的mapper接口,MyBatis会针对这些接口生成代理来调用对应的XMl中的SQL @Configuration @MapperScan("com.example.springbootdemo.mapper") public

SpringBoot整合Mybatis关于分页查询的方法

送分小仙女□ 提交于 2020-04-28 18:57:20
最近公司在用到SpringBoot整合Mybatis时当web端页面数据增多时需要使用分页查询以方便来展示数据。本人对分页查询进行了一些步骤的总结,希望能够帮助到有需要的博友。如有更好的方式,也希望评论留言,本人以作更好的改进。 SpringBoot+Mybatis+PageHelper实现分页 以下介绍实战中数据库框架使用的是mybatis,对整合mybatis此处不做介绍。 使用pageHelper实现分页查询其实非常简单,共三步: 一、导入依赖; 推荐博友可以上maven中央仓库去找合适的版本进行PageHelper的依赖导入 maven中央仓库地址: https://mvnrepository.com 进入maven中央仓库后在搜索框搜索PageHelper,选择合适的版本 pagehelper支持多种数据库:Oracle,MySql,MariaDB,SQLite,DB2,PostgreSQL,SqlServer 等 在这里我们选择pageHelper-spring-boot-starter ,点击进入后根据项目需要选择版本,在这里我选择1.2.12的最新版本 复制maven依赖,添加至项目的pom.xml中 至此,PageHelper插件就引入完成。 二、添加配置; aplication.yml或aplication.xml中添加配置: 配置项说明: 1

阿里java程序员都学的MySQL架构调优笔记及面试百问解析,建议收藏

Deadly 提交于 2020-04-28 16:23:39
数据库是一个综合系统,其背后是发展了几十年的数据库理论。也许你会觉得数据库并不难,因为你可以熟练地写出SQL ,也可以在各个客户端里玩得游刃有余。但就以最常见的MySQL为例,作为程序员,你在使用MySQL的过程中, 是不是曾经遇到过类似的问题: 1.为什么我的count()这么慢? 2.为什么我建了索引,却根本没有效果? 3.为什么我只查一行的语句, 也执行这么慢? 4.MySQL对于大表要怎么优化? 之前,你大概都是通过搜索别人的经验来解决问题。你有没有想过,如果能够理解MySQL的工作原理,那么在遇到问题的时候,是不是就能更快地直戳问题的本质?比如说,知道了索引的实现原理,那遇到索弓问题的时候,你是不是就能从原理的角度,推断可能的解决方案? 在这里给大家分享一个文档《MySQL性能调优与架构设计解析文档》,这个文档包含了基础篇、性能优化篇、架构设计篇三个主要部分,详细知识点还得自己慢慢去吸收哦~ MySQL性能调优与架构设计解析文档 一、基础篇 第1 章MySQL 基本介绍 第2 章MySQL 架构组成 第3 章MySQL 存储引擎简介 第4 章MySQL 安全管理 第5 章MySQL 备份与恢复 二、性能优化篇 第6 章 影响MySQLServer 性能的相关因素 第7 章MySQL 数据库锁定机制 第8 章MySQL 数据库Query 的优化 第9 章MySQL

到底新手如何学习Java 不同阶段需要学什么内容

只愿长相守 提交于 2020-04-28 16:23:01
  到底新手如何学习Java?不同阶段需要学什么内容?当然是需要系统的全面的去掌握。毕竟Java作为技术型知识,很多时候不能提留在纸上谈兵,更需要将基础打好。那么下面就跟着千锋小编一起来看看!   Java学习路线大致分为四大阶段,具体内容如下:   第一阶段——Java基础   Java的学习内容从计算机基本概念,DOS命令开始,为你入门编程语言扫盲,什么是程序,如何配置Java开发环境,Java编程的过程是怎样的,Java有什么物特点,程序是如何运行的,这些你都可以在这里得到答案。   Java编程的基础语法,共分为10个知识点,我们将学习变量,基本数据类型,进制,转义字符,运算符,分支语句和循环语句等,以达到训练基础语法和逻辑能力的目的。还有对数组、面向对象和异常处理等。   第二阶段——JavaWeb   Web前端开发基础和框架、Servlet和JSP在Web后端的应用、Web后端开发相关专题、MVC和分层架构以及项目开发流程及CASE工具的使用等。   第三阶段——Java框架   框架是程序中另一种存储数据的方式,比直接使用数组来存储更加的灵活,在项目中应用十分广泛。同时,框架整合开发(SSH/SSS)、RESTful架构和移动端接口设计、第三方接口和在线支付功能、网站安全和Spring Security应用实战、复杂用户交互处理和Spring Web Flow的应用

SpringBoot系列(十一)拦截器与拦截器链的配置与使用详解,你知道多少?

半腔热情 提交于 2020-04-28 16:14:08
往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件详解 SpringBoot系列(四)web静态资源配置详解 SpringBoot系列(五)Mybatis整合完整详细版 SpringBoot系列(六)集成thymeleaf详解版 Springboot系列(七) 集成接口文档swagger,使用,测试 SpringBoot系列(八)分分钟学会Springboot多种解决跨域方式 SpringBoot系列(九)单,多文件上传的正确姿势 SpringBoot系列(十)优雅的处理统一异常处理与统一结果返回 目录 1. 拦截器介绍 2.自定义拦截器 3.拦截器注入适配器 4.controller测试 5. 测试 6. 扩展内容:拦截器链 7. 总结 1. 拦截器介绍  拦截器是在servlet执行之前执行的程序(这里就是controller代码执行之前),它主要是用于拦截用户请求并作相应的处理,比如说可以判断用户是否登录,做相关的日志记录,也可以做权限管理。  SpringBoot中的拦截器实现和spring mvc 中是一样的,它的大致流程是,先自己定义一个拦截器类,并将这个类实现一个 HandlerInterceptor 类,或者是继承

github代码clone加速

折月煮酒 提交于 2020-04-28 14:12:11
这阵子想看看开源项目 MyBatis 的源码,结果使用 git 的 clone 命令怎么也 clone 不下来,我以为是网速慢,上 Google 一搜,原来 Github 的域名被 DNS 污染了,我说呢怎么访问 Github 一直都很慢,知道了问题原因就解决掉这个恶心的问题 <!--more--> 加速访问 在网上搜索一圈,好多文章中提速的方法就是修改 git 的代理配置,前提是有 SS 之类的{代}{理}工具,然而我开了全局{代}{理},设置了 git 的代理配置,clone 的速度还是很慢,只能到 30kb/s,如果库大点,下个几天几夜都可能😅 设置代理不好使,就继续搜索解决方法,在 github 上找到一个 issues,其中提供了 github 的 host列表。 GitHub中国加速访问 随着 issue 找到了一个生成 hosts 的 repo,但是这个 repo 的 hosts 并不是每日更新的,于是自己 fork 了一份,写了个简单 crontab,每日执行生成更新 hosts 文件。 仓库地址: https://github.com/Mosiki/github 食用方法 最麻烦的方式就是去手动修改 host 文件,最简单的方式就是下载 Switch Host 软件进行 host 修改,跨平台,因为 hosts 文件每日都会自动更新,所以需要本地的 hosts

springboot搭建sqlite测试记录

拥有回忆 提交于 2020-04-28 13:47:51
pom文件 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency> <!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc --> <dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.30.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test<