自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MaoLin Tian's Blog

from Bird to God(mdzz的直译)

  • 博客(416)
  • 资源 (4)
  • 论坛 (2)
  • 收藏
  • 关注

原创 【SpringBoot学习笔记 十二】SpringBoot异步任务、定时任务、邮件任务

之前两篇Blog都是SpringBoot使用层面上的实践,拦截器和异常处理。今天这篇Blog也一样,从使用实践层面上看看SpringBoot给我们封装了什么,能让我们便利的进行异步任务、定时任务、邮件任务的处理。在没有SpringBoot之前,这些功能可能的实现可能需要写很多代码才能实现,同时这篇Blog是SpringBoot实践层面的最后一篇,接下来我们进入集成层面的学习,学习SpringBoot集成Swagger、Dubbo以及SpringSecurity,做个小预告,集成内容学习完就开始SpringC

2021-10-17 11:08:33 16

原创 【SpringBoot学习笔记 十一】深入理解SpringBoot异常处理

上篇Blog详细聊了SpringBoot的拦截器使用,上上篇Blog详细介绍了SpringBoot是如何定制整合页面模板Thymeleaf的,这些都可以看做SpringBoot对SpringMVC功能层面的一个完善,那么本篇Blog继续介绍SpringBoot如何处理前端请求的异常,自动配置是如何帮助我们定制错误页面并轻松应用

2021-10-16 22:22:07 18

原创 【SpringBoot学习笔记 十】深入理解SpringBoot拦截器

拦截器的概念无需赘述,在SpringMVC的一篇Blog中我就详细聊过[【Spring MVC学习笔记 七】深入理解SpringMVC拦截器原理](https://tianmaolin.blog.csdn.net/article/details/120252134),所以关于拦截器和过滤器的区别、拦截器的作用等就不再赘述了,这里主要探讨下SpringBoot是如何使用拦截器的。按照如下步骤我们来处理登录拦截这样一个场景,即未登录之前请求都被转发到login.html界面

2021-10-15 10:54:04 14

原创 【SpringBoot学习笔记 九】SpringBoot定制整合Thymeleaf及页面国际化

整合完数据源MyBatis、SpringMVC之后,我们继续从后往前,到了页面展示的整合部分,之前我们的SSM框架使用的是JSP做为前端页面,在更早的Servlet时代用的也是JSP页面,但是时代变了,因为有了SpringBoot,JSP不再是前端页面的最佳选择了,本篇Blog就来介绍下一个SpringBoot官方推荐的默认模板引擎。

2021-10-14 10:14:22 22

原创 【SpringBoot学习笔记 八】SpringBoot定制整合SpringMVC

上篇Blog详细探讨了SpringBoot是如何整合数据源的,从JDBC层面、数据源连接池层面(Druid),再到MyBatis层面。我们分别使用了`spring-boot-starter-data-jdbc、druid-spring-boot-starter、mybatis-spring-boot-starter`这三个封装好的场景启动器,通过SpringBoot的自动配置机制我们只需要关心yml配置文件内容即可简单方便的使用SpringBoot操作数据库,可以说非常方便,至少比起Spring整合MyBa

2021-10-12 00:21:33 66

原创 【SpringBoot学习笔记 七】SpringBoot定制整合JDBC-Druid-MyBatis

前面几篇博客就SpringBoot的原理以及实践的一些小技巧进行了学习,接下来的几篇Blog,我愿称之为SpringBoot对各层的整合以应对完整的开发任务,无外乎就是对数据库以及持久层的整合以及对SpringMVC的定制整合等,那么今天这篇Blog就来对数据源进行整合配置,包括各个持久层的框架。对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 都默认采用整合 Spring Data(Spring Data 也是 Spring 中与 Spring

2021-10-10 21:29:16 32

原创 【SpringBoot学习笔记 六】JSR303数据校验、日志配置及输出、静态资源映射

前面5篇Blog详细介绍了SpringBoot的实现原理,本篇Blog从实战的角度来看下SpringBoot开发时我们还需要做哪些工作,这里我选择了三个比较重要的模块来进行介绍,包括我们的数据验证,日志配置以及静态资源的映射,这篇博客结束后我们即将进入到SpringBoot的各种整合和集成的学习中,可以理解为SpringBoot基础学习的最后一篇吧。

2021-10-08 17:03:05 122

原创 【SpringBoot学习笔记 五】Spring Boot自定义starter场景启动器

上篇Blog我们学习了SpringBoot是如何实现自动配置的,通过@Configuration的全注解配置方式和Spring Factories 发现机制自动将组件注入到容器,然后依据配置绑定,确定组件的属性值该是多少,实现了全自动的实现方式,不用我们再操心。在第一篇Blog中我们就提到过场景启动器,那么本篇Blog结合SpringBoot自动配置以及前面学的yaml配置文件等知识来自己实现一个自定义的场景启动器。starter基本概念我们再回顾下starter的概念:starter 是 Spring

2021-10-08 14:32:30 66

原创 【SpringBoot学习笔记 四】SpringBoot自动配置原理

之前的Blog【SpringBoot学习笔记 一】SpringBoot基本概念和项目初始化里我提到,SpringBoot初始化的项目结构包含如下四部分,也就是只要包含如下四部分就可以启动一个最简单的SpringBoot一个配置文件:application.properties ,管理相关配置信息,在【SpringBoot学习笔记 二】YAML格式文件配置方式详解中介绍到SpringBoot的YAML配置是如何编写又是如何自动绑定到代码实体中的一个测试类:SpringbootApplicationTes

2021-10-08 12:41:34 72

原创 【SpringBoot学习笔记 三】Profile多环境配置及配置优先级

之前一直看不懂profile是干嘛的,现在终于知道了,是为了切换环境时使用不同配置身份用的,这个可比C#方便多了,记得之前拉代码的时候老会遇到配置被别人改到测试了,现在有了Maven的环境切换,方便多了,本地随便改。即使我们知道SpringBoot有这么多的配置优先级,其实实际用的时候我们也都是简单用,配置好启动身份后,我们一般只在类路径(classpath)下添加各个环境配置文件然后加载使用,避免混乱,但是大概了解下加载逻辑也便于之后方便排查问题。

2021-09-30 23:00:00 24

原创 【SpringBoot学习笔记 二】YAML格式文件配置方式详解

YAML配置基本概念基本语法字面量数组对象SpringBoot配置绑定@ConfigurationProperties进行JavaBean绑定@Value进行属性绑定@PropertySource进行配置绑定Spring Boot导入Spring配置@ImportResource 导入Spring配置全注解方式加载 Spring 配置总结一下...

2021-09-28 16:21:11 16

原创 【SpringBoot学习笔记 一】SpringBoot基本概念和项目初始化

本篇Blog算是一个SpringBoot的入门吧,其实SpringBoot并不神秘,实际上可以看做一个最佳实践,这个最佳实践依据使用场景给我们整合了所有需要用到的依赖,并且经过依赖管理和验证,让我们在生产环境中通过最佳实践去写代码,大大简化了配置、减少了出错概率、能把我们从繁杂的ssm框架配置中解脱出来使我们专注于业务逻辑,想想之前要实现一个Web项目得一个依赖一个依赖加,用什么加什么那是相当麻烦,有了SpringBoot打包都给你,多方便啊,这个场景启动器Starter真是好东西啊,不过还是那句话,如果不

2021-09-23 10:17:16 175

原创 【Spring MVC学习笔记 八】SpringMVC实现文件上传和下载

文件上传和下载都还是比较简单的,但是如果不借助SpringMVC,而是通过Servlet去实现则还需要处理复杂的字节流或者字符流,有了框架以及框架提供给我们的对象,可以方便的进行各种操作,例如转存文件,原样返回给浏览器服务器文件。

2021-09-13 20:50:40 27

原创 【Spring MVC学习笔记 七】深入理解SpringMVC拦截器原理

上篇Blog中我们介绍了SpringMVC中AJAX的使用,上上篇Blog中我们聊到了SpringMVC中Jackson的使用,也就是我们简单聊了下框架整合日常功能的一些细节,本篇Blog我们来看下SpringMVC的拦截器,可以说是框架核心原理的一部分,也是AOP设计思想的一种体现。拦截器概念什么是拦截器呢?SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。拦截器和过滤器区别说它和Servlet中的过滤器类似,但不是相同,因为过滤器和拦

2021-09-12 17:26:29 181 1

原创 【Spring MVC学习笔记 六】SpringMVC框架整合AJAX完成局部刷新

AJAX还是比较经典的,我理解它的常用案例就是通过局部刷新进行逻辑处理,整体页面的资源无需再被处理,也就是我们不需要提交表单给controller,然后controller再将结果打回去进行一个页面刷新操作,在带宽资源紧张的情况下这么使用还是挺方便的。所以AJAX只是一种模式,Struts框架和SpringMVC框架都可以使用,只不过因为SpringMVC可以使用@RestController注解轻易的实现JSON传输,Struts却不易实现,而对于AJAX而言,JSON 可通过 JavaScript 进行

2021-09-12 15:50:17 39

原创 【Spring MVC学习笔记 五】SpringMVC框架整合Jackson工具

Jackson比较简单,就是一个处理Json交互的框架而已,但是在面对前后端分离这种开发模式的时候它却可以帮大忙,对于各种格式也能很好的兼容,还记得我之前的一篇Blog聊到了返回的各种Model格式,那都是对于前后端我们都一起开发的策略,对于前后端分离的开发模式,我们返回给前端同学的数据一定是序列化好的Json串,同样他们传递给我们的Body请求也是同理,这样有了一种契约后,双方就可以各自为战,以约定好的入参和返回值同时开发了,当然除了Jackson还有别的优秀的类似框架,例如FastJson,用法类似这里

2021-09-09 22:42:06 51

原创 【Spring MVC学习笔记 四】Spring-SpringMVC-MyBatis框架整合

这样就整合完成了SSM框架用来实现了一个简单的需求,事实上无论是早年间的Servlet+JSP+JDBC或是后来的SSH框架直至今天的SSM框架,其完成的功能都是固定的,例如JDBC、Hibernate和MyBatis完成的工作是数据持久化,它们都需要处理数据缓存、连接池、结果集映射、查询参数绑定等问题,但随着技术的发展,实现的成本越来越低;Servlet、Struts和SpringMVC都充当了(中心)控制器的功能,它们都需要处理事务、文件上传下载、请求转发、重定向、过滤器、监听器等问题,同样随着技术的发

2021-09-05 22:45:02 408 6

原创 【Spring MVC学习笔记 三】深入实践Spring MVC控制器

上一篇Blog我们通过两种形式,分别基于配置和基于注解实现了Spring MVC的第一个框架程序,接下来本篇Blog就针对我们的控制器做一个深入的研究和探讨,既然是一个Controller,那么肯定包含两个主题内容:接收请求和返回响应,针对这两个大的方向我们深入研究下,例如在接收请求的时候,参数类型有哪些,如何解决乱码问题,如何使用RestFul风格传参,怎么获取请求附加信息等;在返回响应的时候我们需要搞明白数据的返回形式以及页面的返回形式有哪些。当然顺带附加理解下静态资源的访问问题。接下来的整个测试环境我

2021-09-01 22:04:45 43

原创 【Spring MVC学习笔记 二】构建第一个Spring MVC框架程序

了解了基本的Spring MVC工作原理后,我们来构建第一个Spring MVC框架程序,用来做我们的前端控制器,管理Servlet。我们知道,无论是Spring还是MyBatis这种框架,都可以基于不同的形式构建,例如基于配置文件构建和基于注解构建,今天这篇Blog我们就两种方式都尝试一下,看看Spring MVC框架程序如何构建,我们接下来的实现针对框架部分来进行:创建项目并导入Maven依赖首先我们创建一个新项目,同以往一样我们创建一个Java Web项目然后通过pom.xml引入框架依赖:

2021-08-31 20:41:11 40

原创 【Spring MVC学习笔记 一】Spring MVC基本概念及理论基础

终于学习完了Spring的全部内容,那么接下来的精力就集中在了Spring MVC上边,什么是Spring MVC呢,其实Spring MVC就是通过Java实现MVC的轻量级Web框架,既然是Spring MVC,也就是深度兼容到Spring中的。可以这么理解,其实MVC是一种架构思想,实现方式有很多种,之前我们在Java Web基础系列里【Java Web编程 十四】深入理解MVC架构模式通过JSP+Servlet+JDBC组合实现了MVC架构,抑或是我们古早的Struts框架实现MVC架构,其实就是思

2021-08-30 22:07:40 71

原创 【Spring学习笔记 九】Spring声明式事务管理实现机制

什么是事务?事务就是把一系列的动作当成一个独立的工作单元,这些动作要么全部完成,要么全部不起作用,关乎数据准确性的地方我们一定要用到事务,防止业务逻辑出错。关于事务其实我们在MySQL以及Redis部分学习的时候已经深入了解过了,在我的这篇博客:【MySQL数据库原理 七】MySQL数据库事务及锁机制里详细介绍了MySql的事务实现方式,在另一篇博客:【Redis核心知识 三】Redis的事务机制里详细介绍了Redis的事务实现机制,今天这篇Blog从Spring的角度出发和实现方式去讨论下Spring是如

2021-08-29 09:42:39 33 1

原创 【Spring学习笔记 八】Spring整合MyBatis实现方式

学习完了整个MyBatis系列以及Spring的大多数内容后,我们要开始走向Spring+Spring MVC+MyBatis框架集合的第一次整合吧:Spring+MyBatis,也就是通过Spring来整合MyBatis框架。本篇Blog先回顾下MyBatis的实现方式以及Spring的一些实现方式,然后再来看下Spring整合MyBatis的几种方式,如何简化MyBatis的配置,创建一个新项目为了更加清晰,我们新创建一个整合项目:首先我们需要把MyBatis以及Spring相关的坐标引入,这里

2021-08-26 22:13:49 70

原创 【Spring学习笔记 七】深入理解Spring AOP实现机制

AOP是什么,正如我标题所言,AOP是一种编程范式,同OOP一样,只是给出一种范式,具体的实现方式有多种多样,这一点需要明确,可以理解为一种思想模型和实现规范。本篇Blog讨论了基于动态代理的几种AOP的Spring的实现方式,包括原生动态代理方式、XML配置方式、注解方式,对于AOP来说还是注解方式用起来流畅一些,至此,Sping的两大核心思想IOC以及AOP都有了一个详细的认知了,有了AOP大多数通用操作都能被轻而易举的实现了。

2021-08-24 22:48:42 76

原创 【Spring学习笔记 六】静态/动态代理实现机制

为什么要学习代理模式,因为AOP的底层机制就是动态代理,所以在谈论AOP之前,我们先来谈论下代理的实现机制。在学习上一个系列MyBatis分析其源码时其实就遇到过代理模式,准确的是动态代理模式,【MyBatis学习笔记 四】MyBatis基本运行原理源码解析,在这篇Blog里我分析了其实我们MyBatis的的Mapper代理的实现方式就是一个无实现类的动态代理,通过类型全限定名用反射去获取类型,然后在执行具体方法时,触发附加在该方法上的代理去执行,又因为该方法无实际执行内容,所以实现的逻辑其实是代理里的逻辑

2021-08-22 23:03:17 56

原创 【解决方案 二十二】深入理解RBAC权限模型

工作时遇到了需要设计一套权限系统,所以做了一些调研。目前业界比较通用的权限系统设计都是采用RBAC模型,那么我们详细理解下RBAC模型的概念以及一些实际使用中建议的使用规范:RBAC权限模型首先了解下RBAC权限模型的基本概念和几种模型分类。1 RBAC权限模型RBAC(Role-Based Access Control)即:基于角色的权限控制。通过角色关联用户,角色关联权限的方式间接赋予用户权限,增加权限设置的扩展性。为什么要有角色的概念:对于批量的用户权限调整,只需调整用户关联的角色权限,无

2021-08-21 17:41:17 42

原创 【解决方案 二十一】系统专业名词梳理及释义

之前一直对一些专业名词理解的不太深刻或者没有搞太懂,这里做一个统一的梳理,包括PV、UV、IP、DAU、MAU、GMV、GTV、QPS、TPS1-简单统计指标包括:PV、UV、IP、DAU、MAU、GMV、GTV1-PV:页面访问量Page View,页面访问量,即页面浏览量或点击量。用户每一次对网站中的每个页面访问均被记录 1 次。用户对同一页面的多次刷新,访问量累计。2-UV:用户访问量Unique Visitor,用户访问量,独立访客,统计1天内访问某站点的用户数。可以统计服务一天的访

2021-08-21 17:11:17 21

原创 【解决方案 二十】作业调度系统cron表达式详解

在做项目的过程中发现有跑批任务,也就是作业调度系统【其实也就是定时任务】,而作业调度系统是可以通过Cron表达式配置执行时间和频率的,那么这个表达式表达的含义是什么呢?我们一般把它配置在定时任务重用于控制任务执行时间和频率1 语法和配置格式标准语法格式如下,从左到右按顺序展示,共7个位置:[秒] [分] [时] [日] [月] [周] [年]2 通配符说明以上最右侧的可用通配符的说明如下:3 配置示例按照如上的字段位以及通配符写一些示例,因为我们一般不用年,所以常用的配置只有

2021-08-21 17:04:46 30

原创 【Spring学习笔记 五】Spring注解及Java类配置开发

前面我们提到过:按照注入的配置元数据来讲,Spring的配置开发一般分为三类:基于 XML 的配置文件,基于注解的配置,基于 Java 的配置【不推荐】,之前我们所有的概念和实践都是基于XML配置实现的,今天这篇Blog我们来基于注解进行Spring的开发,了解下注解的开发模式,这是一种可以大量减少XML配置的开发方式;同时顺带了解下基于Java类的配置开发方式,这种方式则完全不使用配置文件。基于注解进行配置开发从 Spring 2.5 开始就可以使用注解来配置依赖注入。而不是采用 XML 来描述一个

2021-08-20 22:25:38 56

原创 【Spring学习笔记 四】Spring自动装配机制实践

我们一般学习某个知识,一定会现有个较为复杂的配置让你理解其中的关系,这个配置清晰规整,但是可能会需要大量的配置,这个时候就会有约定大于配置的理论实现了,通过我们约定好的一致的名称,我可以少写很多对应关系,例如MyBatis中如果数据库表的字段名和模型Model的字段名一致,那么就不需要结果集映射了。同样的在Spring中如果我们约定好一些规则,也能减少XML的配置。本篇Blog我们依然基于XML配置进行介绍,基于注解配置和Java类配置的实现方式统一在后续Blog介绍。自动装配概念自动装配是使用spri

2021-08-20 19:21:00 46

原创 【Spring学习笔记 三】深入理解Beans和依赖注入DI

上一篇Blog我们粗浅的搭建了第一个Spring框架,学习了基本的依赖注入实现方式,感觉能面对的场景太少了,本篇Blog我们详细的了解下Spring-Bean到底是如何工作的、作用域是什么,生命周期是什么,以及面对各种类型,依赖注入DI是通过什么方式实现注入的。...

2021-08-19 21:21:47 35

原创 【Spring学习笔记 二】构建第一个Sping框架程序

上一篇Blog我们大致了解了Spring的历史由来,以及Spring的核心思想:IOC和AOP,以及IOC的实现手段DI,并且了解了Spring的分层结构体系,本篇Blog就来快速上手一个Spring框架程序,看看Spring的这些核心思想和理论基础是如何在实践中发挥作用的。初始化一个Spring程序接下来我们就按照步骤初始化一个Spring程序:1 新建Java Web项目因为我们是搞Web开发么,所以这次依然选择构建一个Web程序选择配件模块时依然跳过,在学习的过程中依次向pom.xml中加

2021-08-18 20:09:38 49

原创 【Spring学习笔记 一】Sping基本概念及理论基础

花费了8篇Blog终于将MyBatis学习完了,对这个半自动化的ORM框架也有了较为深入的理解。今天这篇Blog是Spring系列的第一篇Blog,主要了解下Spring的结构以及Spring的核心思想IOC以及核心思想的实现方式DI。为什么需要SpringIOC和DI的概念Sping组成结构...

2021-08-17 19:09:31 49

原创 【MyBatis学习笔记 八】MyBatis两级缓存机制

早在去年12月份的一篇Blog中【MySQL数据库原理 一】MySQL架构及查询语句执行流程探索MySQL的执行步骤中就提到过查询缓存这一个概念:并且提到过其实不建议使用查询缓存,正因为如此,我们才不把缓存做到数据库,这样作为服务端的数据库缓存了各个客户端大量查询结果能用的比例却比较低,性价比不高;反之大多数应用都把缓存做到了应用逻辑层,简单的如一个map的MyBatis,由客户端自己定义策略。缓存的基本概念什么是缓存,缓存就是存储在内存中的临时数据。将用户经常查询的数据放在缓存(内存)中,用户去

2021-08-17 00:07:57 34

原创 【MyBatis学习笔记 七】MyBatis动态SQL基本操作

之前的Blog我们使用了各种SQL语句,然而大多数都是静态的SQL,也就是不会依据业务逻辑来进行拼接的单一逻辑的SQL,其实有很多场景我们也需要使用到动态SQL。为什么使用MyBatis动态SQL什么是动态SQL呢?动态SQL指的是根据不同的查询条件 , 生成不同的SQL语句。为什么使用动态SQL首先我们需要明确为什么有些场合下需要使用动态SQL而不是静态SQL。例如当我们写一些判断SQL或者循环的SQL时:SET @username='tml';SET @age=30;select * fr

2021-08-16 17:01:20 29

原创 【MyBatis学习笔记 六】MyBatis关联查询和集合查询

之前我们做的都是单表查询,那么问题来了,如果我们想要做多表关联查询该怎么处理呢,本篇Blog来探索关联查询(多对一关系)和集合查询(一对多关系)的实现方式。同样还是在之前的Person表基础上做一些扩展。数据及代码准备首先我们预设一个场景:一条人员Person数据对应多个账户BankAccount数据,然后分别进行账户数据的查询时获取到关联的人员数据【多对一关联查询】和通过人员获取账户数据【一对多关联查询】。1 数据表准备首先我们需要准备两张数据表,首先Person表是之前准备好的,我们还是用之前预

2021-08-16 10:24:08 24

原创 【MyBatis学习笔记 五】MyBatis注解开发实现方式

上一篇Blog我们详细分析了MyBatis的执行原理,我们可以感受到其实实际的方法执行是通过动态代理而非方法本身实现的,那么既然基于动态代理可以实现,那么基于注解的实现方式貌似看起来更加直观,因为注解是可以直接加在方法上的。本篇Blog来学习下如何通过注解进行MyBatis的实现。MyBatis注解开发流程因为我们使用了注解开发,所以PersonMapper文件就不需要了,而且我们知道其实该配置文件最终被获取的也是接口的全限定名,所以我们确保核心配置文件能找到该接口即可:1 调整核心配置文件我们首先

2021-08-14 22:49:57 26

原创 【MyBatis学习笔记 四】MyBatis基本运行原理源码解析

前面三篇Blog详细的对MyBatis从使用层面上进行了实践,包括Mybatis的整体配置、基本操作:CURD以及模糊查询like语句,以及高级的结果集映射、分页查询和日志输出查看。那么使用到现在我觉得大家都会像我一样好奇,Mybatis的实现原理机制到底是什么样的,我们知道一个MyBatis方法执行要有这么几个步骤,拿update操作举例: @Test public void testUpdatePerson() { //1.获取SqlSession对象 SqlS

2021-08-14 19:00:12 38

原创 【MyBatis学习笔记 三】结果集映射、日志处理及分页查询

上一篇Blog了解了基本的MyBatis操作后,我们本篇来学习一下如何实现一些较为高级的操作。分别是返回值的模型映射、日志处理以及分页查询的实现。模型映射如果是一个初始化的项目,我们当然尽量的让我们的数据对象,也就是Data Model和数据表中的字段名称保持一致,但是要维护一些老的项目或者说确实有一些我们认为名称应该有所区别的,就需要做一个映射了,类似Hibernate里的Person.hbm.xml文件,我们的Mapper文件也需要做返回结果的映射。命名不一致的问题首先我们在上篇【MyBatis

2021-08-11 23:37:19 39

原创 【MyBatis学习笔记 二】MyBatis基本操作CRUD及配置解析

上一篇Blog了解了MyBatis的基本概念、用途并且简单构造了一个MyBatis的项目并进行了一些操作,本篇Blog就来学习下MyBatis的基本操作,也就是我们常用的CRUD增删改查,并且通过基本操作来深入理解下配置的解析流程。基本操作还是使用我们上篇Blog的项目做下面的一些操作,继续操作person表来完成基本的CRUD操作,回顾下上篇Blog我们创建的PersonDao对象:package com.example.MyBatis.dao.mapper;import com.example.

2021-08-08 17:26:17 62 1

原创 【MyBatis学习笔记 一】MyBatis基本概念及项目集成

在Java Web编程系列的Blog中,我们学习了使用JDBC去通过代码操作数据库,我们知道JDBC是一组规范,一组API,也在使用的过程中发现一些代码控制上的不友好感,例如我们需要自己去写代码控制连接的生命周期;获取到结果集需要自己去转换数据类型再进行模型的设置;sql语句强嵌入到代码中不好维护等等诸多问题。其实这些也是可以理解的,JDBC只是提供了一组规范,细粒度的解决代码访问数据库这个问题,最佳实践还仰赖ORM框架来实现,所以其实后续有很多封装的ORM框架作为DAO层和数据库Model的管理者。例如我

2021-08-08 13:07:12 67

Visual Studio2015的圈复杂度检测工具code metrics

这个工具是用于检测代码圈复杂度的,可以显而易见的标注每个方法的圈复杂度,并且依据大小有颜色直观的显示

2018-02-02

vs_enterprise.exe

VisualStudio2019企业版,最新版本,激活码BF8Y8-GN2QH-T84XB-QVY3B-RC4DF

2019-09-13

原则的详细读书笔记罗列

关于原则的xmind,关于原则的分析,瑞达里欧的原则分享,原则这本书还是很不错的,自己整理了学习笔记,分享给大家一起看看

2020-11-05

Java面试大全

这是我自面试以来做过的最全的总结,包括 计算机网络 java web mysql 设计模式 JVM 剑指offer hashmap源码分析,还有一些可以从我博客上看http://blog.csdn.net/sinat_33087001本来想免费分享给大家,但好像最少得选一个,所以只能设置为1,希望能够帮助大家。

2017-10-10

希望和大家交流学习

发表于 2018-04-26 最后回复 2018-05-29

坚持

发表于 2017-09-01 最后回复 2017-09-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除