MyBatis

2020Java项目框架搭建系列(Java进阶学习路线)

不打扰是莪最后的温柔 提交于 2020-08-06 21:22:22
前言: 已经工作4年,真是时间飞逝。 其实当你在一间公司工作一两年之后,公司用到的开发框架的基本使用你应该都会了。 你会根据一个现有项目A复制一下搭建出另外一个类似框架的项目B,然后在项目B上进行业务逻辑开发。 如果你更努力一点,你可能有去摸索一些配置的作用,一些问题的排查会更有经验和自己的想法。 如果你好奇心更强一点,可能会去了解一些框架的原理,各个框架之间是怎么相互协助工作的。 自己能否从无到有将这些框架串联起来。 想写一系列这样的文章: 将Java项目开发过程中的一些框架,如何一步步串联起来,并且结合源码探索其核心部分原理。 以及项目从小项目演变到大项目的过程中,需要开发框架以及结构变化。 以及特定业务场景设计。 具体概请见下文。 大概使用的开发框架及工具: 基本工具: Eclipse、Maven、Tomcat 前端: Jquery、Vue.js、 Element 后台核心框架: Spring、SpringMVC、MyBatis 后台辅助框架: 日志框架Logback、安全框架Shiro、任务调度框架Quartz 分布式框架: Dubbo、RabbitMQ、Redis………….. 除了这些框架还有一些特定业务场景,以及高扩展高可用的架构演变过程等等。 主要分为下面三个阶段博客提纲。 阶段一:集中式基本架构 一、基本工具: Eclipse、Maven、Tomcat 二

mybatis开发,你用 xml 还是注解?我 pick ...

穿精又带淫゛_ 提交于 2020-08-06 17:04:07
最近在看公司项目时发现有的项目mybatis是基于注解开发的,而我个人的习惯是基于xml文件开发。 对于mybatis注解开发的原理理解不够,于是翻阅了部分源码,写下此文。主要介绍了mybatis开发的两种形式、三种写法。还有一点瞎思考,介绍了一处骚代码、还有一个坑。 原创不易,感谢阅读,感谢关注,感谢点赞,感谢转发。 荒腔走板 大家好,我是 why 。老规矩,在技术分享开始之前,先荒腔走板,聊点别的。 上周我写的这篇文章 《我告诉你这书的第 3 版到底值不值得买?》 居然被《深入理解Java虚拟机》的作者周志明先生看到了,还给我赞赏并留言给我说:作者表示感谢,真心的。 说实话,我看到这个赞赏的时候我都震惊了。有一种和大神产生了交集的感觉。 其实上周这篇文章是出版社找到我说送我一本第三版,让我看看,然后写个观后感就行。 恰好,在他们没有找到我之前我也是有这样的打算的。 我不是为了白嫖出版社几本书,而是我早在去年年底打算买第三版后,这篇文章就一直在着手准备了。 在机缘巧合之下,即完成了自己的计划,又获得了出版社的几本书,通过出版社,又勾搭上了本书作者,不仅获得了作者的赞赏还得到一本签名版。 哎,这疯狂而又操蛋的人生呀。 所以你问我写了这么久的文章收获了什么? 说实在的,我没有通过写文章挣到几个钱。但是我收获的是与一群志同道合的原创作者同行的机会、是读者读完文章后对我的文章的指点与赞扬

JAVA互联网架构师专题/分布式/高并发/微服务【第三期】

妖精的绣舞 提交于 2020-08-06 16:16:26
JAVA互联网架构师专题/分布式/高并发/微服务【第三期】 下载地址: 百度云盘 全新打造60W年薪架构师课程,4年磨一剑,10次课程升级改版 课程内容涉及Java互联网一线大厂技术、源码框架 性能调优 (Tomcat Nginx JVM) 分布式框架(并发编程 Zookeeper Netty dubbo Redis) 微服务框架( Spring Cloud Docker虚拟化 微服务架构 ) 章节目录 J AVA架构课开班典礼 【录播】致新加入同学的学习计划-诸葛(34分钟) 【回放】IOC容器设计理念与核心注解的使用(6月5日 20:10-22:00) 源码框架专题 【回放】Spring Ioc容器源码解析(上)(6月12日 20:10-22:00) 【回放】Spring Ioc容器源码解析(下)(6月14日 20:10-22:00) 【回放】Spring Ioc容器解决循坏依赖(6月16日 20:10-22:00) 【回放】Spring AOP 源码深度解析(一)(6月19日 20:10-22:00) 【回放】Spring AOP 源码深度解析(二)(6月21日 20:10-22:00) 【回放】Spring事务管理源码深度解析(6月23日 20:10-22:00) 【回放】Spring 5新特性剖析(6月26日 20:10-22:00) 源码框架专题 【回放

MongoDB学习(三) --- MongoDB Java入门

别等时光非礼了梦想. 提交于 2020-08-06 14:51:44
1、搭建测试环境 步骤一:创建 maven 项目 父项目的pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.tqylxuecheng</groupId> <artifactId>xc_parent</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>xc_test_parent</module> </modules> <!-- 1 确定spring boot的版本--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot

SSM_(springMVC+SpringBoot+Mybatis)开发架构介绍

不想你离开。 提交于 2020-08-06 12:08:45
文章目录 1. 目标 2. Java的用武之地 2.1. CS架构 2.2. BS架构 2.3. BS与CS架构的区别 小结: 3. BS架构通信问题 3.1. IP地址和端口 3.2. HTTP协议 3.3. 请求协议与响应协议 3.5. 小结: 4. 服务器架构 4.1. 三层架构的意义 4.2. MVC 4.3. 总结: 1. 目标 掌握主流的web开发框架,能够使用SSM(springMVC SpringBoot Mybatis)开发web应用 2. Java的用武之地 常见的软件架构体系主要分为两种:CS架构、BS架构 java主要用于开发BS架构的应用 2.1. CS架构 client客户端 server服务端 需要在本地安装客户端程序才能访问服务端 QQ 、杀毒软件、网游 2.2. BS架构 即浏览器/服务器(Browser/Server); 本地只要有浏览器即可 用浏览器打开的任何应用:淘宝、优酷、哔哩哔哩、论坛、博客、地图… 2.3. BS与CS架构的区别 性能方面 CS:能充分发挥客户端PC的处理能力,大部分数据处理由客户端完成, 处理能力强,速度快,用户体验好 ,但是对客户端电脑的配置要求高,客户群体受限,使用成本高。 BS:所有数据处理由服务器完成,客户端能安装浏览器即可,客户端要求低。 个性化 CS:支持丰富的自定义设置,可以充分满足客户端个性化要求(换肤

Mybatis运行原理(带你三步走)

生来就可爱ヽ(ⅴ<●) 提交于 2020-08-06 12:05:53
Mybatis运行原理(带你三步走) 官网地址: http://www.mybatis.org/mybatis-3/zh/getting-started.html 第一步:初始化阶段,解析并加载到Configuration实例中。 读取xml配置文件和注解中的配置信息,创建配置对象,并完成各个模块的初始化工作。 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。 源码解读入口: String resource = "org/mybatis/example/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 其中: XMLConfigBuilder

跟我学Springboot开发后端管理系统2:Mybatis-Plus实战

妖精的绣舞 提交于 2020-08-06 10:57:50
在Matrix-Web项目中使用Mybatis-Plus作为操作数据库的ORM框架。在市面上常用的ORM框架有hibernetes、mybatis、JPA等,那么为什么选择Mybatis-Plus呢?主要基于以下方面考虑: 兼容Mybatis,可以轻松写出很复杂的sql和业务逻辑。 _ 简单、容易上手,单表操作不需要写mybatis的xml,代码自动生成,可以实现快速开发。 基于Mybatis,和Mybatis完全兼容,和Mybatis相比,此框架无性能损耗(号称成为 MyBatis 最好的搭档) Mybatis-Plus符合国人开发习惯 MyBatis-Plus (简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。符合本项目的宗旨。 Mybatis特性 无侵入 :只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小 :启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作 :内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 支持 Lambda 形式调用 :通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错 支持主键自动生成 :支持多达 4 种主键策略

腾讯T4架构师耗时八个月整理《深入浅出MyBatis技术原理与实战》

て烟熏妆下的殇ゞ 提交于 2020-08-06 10:43:07
写在前面 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 本书以讲解MyBatis基础运用和原理为主,所以适合初级到中高级开发人员阅读。 小编这里早已为大家准备好【深入浅出MyBatis技术原理与实战】的PDF完整版 内容介绍 本书分为三大部分 第一部分是MyBatis基础应用 第1章丨MyBatis【MyBatis的内容简介,告诉读者MyBatis是什么,在何种场景下使用它。】 领取《深入浅出MyBatis技术原理与实战》方式: 点此获取 第2章丨MyBatis入门【主要介绍MyBatis的基础模块及生命周期,并给出实例。】 第3章丨配置【主要介绍MyBatis配置的主要含义和内容。】 第4章丨映射器【介绍MyBatis映射器的主要元素及其使用方法。】 第5章丨动态SQL【介绍动态SQL,助你轻松应对大部分的SQL场景。】 第二部分是MyBatis原理 第6章丨MyBatis的解析和运行原理【介绍MyBatis的解析和运行原理,我们将了解到SqlSession的构建方法

学习要走心,跳槽需慎重,1000道BATJava面试题你都会吗?等你来挑战 ​

一曲冷凌霜 提交于 2020-08-06 09:43:30
面试题 不会做的不要着急!!! MyBatis 面试题 什么是 Mybatis? Mybaits 的优点: MyBatis 框架的缺点: MyBatis 框架适用场合: MyBatis 与 Hibernate 有哪些不同? #{}和${}的区别是什么? 当实体类中的属性名和表中的字段名不一样 ,怎么办 ? 模糊查询 like 语句该怎么写? 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗? Mybatis 是如何进行分页的?分页插件的原理是什么? Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式? 如何执行批量插入? 如何获取自动生成的(主)键值? 在 mapper 中如何传递多个参数? Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql? Xml 映射文件中,除了常见的 select|insert|updae|delete标签之外,还有哪些标签? 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里? 一对一、一对多的关联查询 ? MyBatis 实现一对一有几种方式?具体怎么操作的? MyBatis 实现一对多有几种方式,怎么操作的? Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?

Java面试常被问到这道题:如何保证缓存与数据库的双写一致性?

岁酱吖の 提交于 2020-08-06 09:31:56
面试原题:如何保证缓存与数据库的双写一致性? 面试官心理分析 你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题, 那么你如何解决一致性问题? 面试题剖析 一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统 不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即: 读请求和写请求串行化 ,串到一个 内存队列 里去。 串行化可以保证一定不会出现不一致的情况,但是它也会导致系统的吞吐量大幅度降低,用比正常情况下多几倍的机器去支撑线上的一个请求。 Cache Aside Pattern 最经典的缓存+数据库读写的模式,就是 Cache Aside Pattern。 读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。 更新的时候, 先更新数据库,然后再删除缓存 。 为什么是删除缓存,而不是更新缓存? 原因很简单,很多时候,在复杂点的缓存场景,缓存不单单是数据库中直接取出来的值。 比如可能更新了某个表的一个字段,然后其对应的缓存,是需要查询另外两个表的数据并进行运算,才能计算出缓存最新的值的。 另外更新缓存的代价有时候是很高的。 是不是说,每次修改数据库的时候,都一定要将其对应的缓存更新一份?也许有的场景是这样,但是对于 比较复杂的缓存数据计算的场景 ,就不是这样了。