Spring Boot2(十一):Mybatis使用总结(自增长、多条件、批量操作、多表查询等等)
上次用Mybatis还是2017年做项目的时候,已经很久过去了。中途再没有用过Mybatis。导致现在学习SpringBoot过程中遇到一些Mybatis的问题,以此做出总结(XML极简模式)。当然只是实用方面的总结,具体就不深究♂了。这里只总结怎么用!!! 一、关于Mybatis1、什么是Mybatis(1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 (2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 (3)通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的 ...
Spring Boot2(十):RabbitMQ 详解
RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。 消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将 RocketMQ 捐献给了 Apache,当然了今天的主角还是讲 RabbitMQ。消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的。在分布式的系统中,消息队列也会被用在很多其它的方面,比如:分布式事务的支持,RPC 的调用等等。 以前一直使用的是 ActiveMQ,在实际的生产使用中也出现了一些小问题,在网络查阅了很多的资料后,决定尝试使用 RabbitMQ 来替换 ActiveMQ,RabbitMQ 的高可用性、高性能、灵活性等一些特点吸引了我们,查阅了一些资料整理出此文。 RabbitMQ 介绍RabbitMQ 是实现 AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 RabbitMQ 主要 ...
Spring Boot2(九):整合Jpa的基本使用
今天早上看到一篇微信文章,说的是国内普遍用的Mybatis,而国外确普遍用的是Jpa。我之前也看了jpa,发现入门相当容易。jpa对于简单的CRUD支持非常好,开发效率也会比Mybatis高出不少,因为JpaRepository会根据你定制的实体类,继承了JpaRepository会有一套完整的封装好了的基本条件方法。减少了很多开发量。你只需要写SQL就行了。可能我才刚入门Jpa,对一些认识还是很浅显。我觉得Jpa对于多表查询,开发起来有点吃力。。 这是我开始玩Jpa的最初的感受,但是Jpa却受到了极大的支持和赞扬,在国外Jpa远比Mybatis流行得多得多。国内却还是在流程用Mybatis,估计也是收到很多培训机构或者大V的带领下,很多国内优秀的开源项目也是用的Mybatis,因为已经用得非常熟练了。 话不多说,先看看SpringBoot如何整合使用Jpa吧! 这里具体讲一讲Jpa的搭建,几种常见的场景的使用:增删改查、多表查询,非主键查询这几种情况的一个学习总结。 一、代码部署1、添加Maven依赖<dependency> <groupId>org.spr ...
Spring Boot2(八):性感banner,在线发牌
emmm,没有啥前言 玩过SpringBoot的都知道,SpringBoot启动的时候,默认会在控制台打印SpringBoot字样和当前版本。 可是脑洞奇大的程序员怎么可能就这么拘泥于正常banner呢? 怎么骚怎么来是吧~ 具体说明用法,我就不一一举例了,网上有很多设置banner的方案。 我一般是直接在resource文件夹下面新增文件:banner.txt 就可以达到你想要的效果。 具体图案生成器在这里: http://patorjk.com/software/taag http://www.network-science.de/ascii/ http://www.degraeve.com/img2txt.php 这都不够那个。。好了,不多BB 我把我自用的给大家分享 ************************************************************* 个人博客:https://niaobulashi.com* 微信公众号:鸟不拉诗***************************************************** ...
Spring Boot2(七):过滤器拦截器的使用
过滤器和拦截器两者都具有AOP的切面思想,关于aop切面,可以看上一篇文章。过滤器filter和拦截器interceptor都属于面向切面编程的具体实现。 一、过滤器过滤器工作原理 从上图可以看出,当浏览器发送请求到服务器时,先执行过滤器,然后才访问Web资源。服务器响应Response,从Web资源抵达浏览器之前,也会途径过滤器。 过滤器是一个实现javax.servlet.Filter接口的Java类。javax.servlet.Filter接口定义了三个方法 方法 描述 public void init(FilterConfig filterConfig) web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,读取web.xml配置,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作(filter对象只会创建一次,init方法也只会执行一次)。开发人员通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。 public void doFilter (ServletRequest, ...
Spring Boot2(六):使用Spring Boot整合AOP面向切面编程
众所周知,spring最核心的两个功能是aop和ioc,即面向切面和控制反转。本文会讲一讲SpringBoot如何使用AOP实现面向切面的过程原理。 一、何为aop aop全称Aspect Oriented Programming,面向切面,AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。其与设计模式完成的任务差不多,是提供另一种角度来思考程序的结构,来弥补面向对象编程的不足。 通俗点讲就是提供一个为一个业务实现提供切面注入的机制,通过这种方式,在业务运行中将定义好的切面通过切入点绑定到业务中,以实现将一些特殊的逻辑绑定到此业务中。 举个栗子,项目中有记录操作日志的需求、或者流程变更是记录变更履历,无非就是插表操作,很简单的一个save操作,都是一些记录日志或者其他辅助性的代码。一遍又一遍的重写和调用。不仅浪费了时间,又将项目变得更加的冗余,实在得不偿失。 所以就需要面向切面aop就出场了。 二、aop相关名词 要理解SpringBoot整合aop的实现,就必须先对 ...
Spring Boot2(五):使用Spring Boot结合Thymeleaf模板引擎使用总结
一般来说,常用的模板引擎有JSP、Velocity、Freemarker、Thymeleaf 。 SpringBoot推荐的 Thymeleaf – 语法更简单,功能更强大; Thymeleaf是一种Java XML/XHTML/HTML5模板引擎,可以在Web和非Web环境中使用。它更适合在基于MVC的Web应用程序的视图层提供XHTML/HTML5,但即使在脱机环境中,它也可以处理任何XML文件。它提供了完整的Spring Framework集成。 一、 标准表达式语法它们分为四类: 1.变量表达式 2.选择或星号表达式 3.文字国际化表达式 4.URL 表达式 变量表达式变量表达式即 OGNL 表达式或 Spring EL 表达式(在 Spring 术语中也叫 model attributes)。如下所示:${session.user.name} 它们将以HTML标签的一个属性来表示: <span th:text="${book.author.name}"> <li th:each="b ...
Spring Boot2(四):使用Spring Boot多数据源实现过程
实际业务场景中,不可能只有一个库,所以就有了分库分表,多数据源的出现。实现了读写分离,主库负责增改删,从库负责查询。这篇文章将实现Spring Boot如何实现多数据源,动态数据源切换,读写分离等操作。 一、代码部署快速新建项目spring-boot项目 1、添加maven依赖<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.0.1</version></dependency&g ...
Spring Boot2(三):使用Spring Boot2集成Redis缓存
前面一节总结了SpringBoot实现Mybatis的缓存机制,但是实际项目中很少用到Mybatis的二级缓存机制,反而用到比较多的是第三方缓存Redis。 Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。 一、安装启动Redis安装Redis的就不讲太多了,直接去官方下载redis,下载Redis-x64-3.2.100.zip,cmd,在redis目录下输入:redis-server.exe redis.windows.conf启动即可 另外可以通过Redis桌面客户端可视化连接工具操作:redisdesktop 二、代码部署快速建立Spring Boot项目 添加redis依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency> application.yml ...
Spring Boot2(二):使用Spring Boot2集成Mybatis缓存机制
学习SpringBoot集成Mybatis的第二章,了解到Mybatis自带的缓存机制,在部署的时候踩过了一些坑。在此记录和分享一下Mybatis的缓存作用。 本文章的源码再文章末尾 什么是查询缓存MyBatis有一级缓存和二级缓存。记录可以看下这篇博文: 一级缓存首先看一下什么是一级缓存,一级缓存是指SqlSession。一级缓存的作用域是一个SqlSession。Mybatis默认开启一级缓存。 在同一个SqlSession中,执行相同的查询SQL,第一次会去查询数据库,并写到缓存中;第二次直接从缓存中获取。当执行SQL查询前后发生增删改操作时,则SqlSession的缓存清空。 具体可以看这段代码: @Testpublic void testLocalCacheScope() throws Exception { SqlSession sqlSession1 = factory.openSession(true); SqlSession sqlSession2 = factory.openSession(true); St ...
Spring Boot2版的权限管理系统
github项目地址:https://github.com/niaobulashi/niaobulashi springboot学习地址:http://www.ityouknow.com/spring-boot.html shiro学习地址:https://jinnianshilongnian.iteye.com/blog/2018398 在线演示地址:http://manage.niaobulashi.com 登录名和密码:niaobulashi/niaobulashi 项目说明 采用SpringBoot、MyBatis、Shiro框架,开发的一套权限系统,极低门槛,拿来即用。设计之初,就非常注重安全性,为企业系统保驾护航,让一切都变得如此简单。 提供了代码生成器,只需编写30%左右代码,其余的代码交给系统自动生成,可快速完成开发任务 支持MySQL、Oracle、SQL Server、PostgreSQL等主流数据库 项目结构niaobulashi├─niaobulashi-admin 管理后台│ ├─db 数据库SQL脚本│ │ │ ├─modul ...
聊聊MyBatis缓存机制
MyBatis是常见的Java数据库访问层框架。在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之处,在使用中容易引起脏数据,形成一些潜在的隐患。个人在业务开发中也处理过一些由于MyBatis缓存引发的开发问题,带着个人的兴趣,希望从应用及源码的角度为读者梳理MyBatis缓存机制。官方说明:MyBatis Spring-Boot-Starter will help you use MyBatis with Spring Boot其实就是 Mybatis 看 Spring Boot 这么火热也开发出一套解决方案来凑凑热闹,但这一凑确实解决了很多问题,使用起来确实顺畅了许多。mybatis-spring-boot-starter主要有两种解决方案,一种是使用注解解决一切问题,一种是简化后的老传统。 本次分析中涉及到的代码和数据库表均放在GitHub上,地址: mybatis-cache-demo 目录本文按照以下顺序展开。 一级缓存介绍及相关配置。 一级缓存工作流程及源码分析。 一级缓存总结。 二级缓存介绍及相关配置。 二级缓存 ...
Spring Boot2(一):使用Spring Boot2集成Mybatis基础搭建
Mybatis 初期使用比较麻烦,需要各种配置文件、实体类、Dao 层映射关联、还有一大推其它配置。mybatis-spring-boot-starter 就是 Spring Boot+ Mybatis 可以完全注解不用配置文件,也可以简单配置轻松上手。 mybatis-spring-boot-starter官方说明:MyBatis Spring-Boot-Starter will help you use MyBatis with Spring Boot其实就是 Mybatis 看 Spring Boot 这么火热也开发出一套解决方案来凑凑热闹,但这一凑确实解决了很多问题,使用起来确实顺畅了许多。mybatis-spring-boot-starter主要有两种解决方案,一种是使用注解解决一切问题,一种是简化后的老传统。 当然任何模式都需要首先引入mybatis-spring-boot-starter的 Pom 文件,现在最新版本是 2.0.1 <dependency> <groupId>org.mybatis.spring.boot</groupId& ...
2019西安草莓音乐节-周六这么过
还记得3年前在武汉的时候,去的武汉的草莓音乐节。今年刚好在西安也举办了草莓音乐节,丝毫没有犹豫。 冲鸭 举办场地在西安的大明宫国家遗址公园,公园相当之大,举办这种音乐节相当合适不过了现场安全措施也相当到位,保安,消防,警察都就位了。给你们点赞!可以说现场听音乐和平时还是很不一样的 emmm,悄咪咪的拍了这张,太可爱了吧 ::aru:clap:: 当热门歌手要出场的时候,现场异常的拥挤,进也进不去,出也不好出,很尴尬。一个歌手唱完后,中间大概要等半个多小时。于是就傻呼呼的站在那里等上那么久,而且都是站在那里等,天气温度略高,热啊等到歌手出来之后,全场尖叫声,啊,终于等到了,你可总算是出来了 开心的周六希望每年都可以去一趟草莓音乐节不管工作有多忙,请假也得去 ::aru:cheer::