4.1k 4 分钟

# 前言 因为 AOP 大致是什么,第一篇已经讲过了,这里放一张图: AOP 的理念:就是将分散在各个业务逻辑代码中相同的代码通过横向切割的方式抽取到一个独立的模块中! 导入依赖: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId>...
7.6k 7 分钟

# 创建项目 我们现在 IDEA 里面创建一个项目,之后都会在这个项目里写代码讲解。 选择 maven ,不需要选择什么 quick-start ,直接 next ,创建项目,也就是只需要 maven 。 导入 spring 依赖: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId>...
2.2k 2 分钟

# 前言 最近课设要用 SpringBoot,想着顺便就把这部分博客更新。 但是为什么我选择先更新一下 Spring 呢?因为我根本没在意这个课设🤣,更新是因为学习进度到这了哈哈哈哈。 很多开发者都是直接上手 SpringBoot,会导致对 Spring 整体框架底层,以及发展历史不是很了解,对老旧项目和底层 Bug 分析没有全局观。 Spring 作为一个成熟的,受广大企业爱戴的框架,它已经形成了良好的生态环境,所以学习的时候不能只是当成一个简单的框架,会用就行啥的。 作者也是边更新边学习的,泪目。 这篇文章不会直接讲框架的使用,当然也不是什么 Spring 发展历史,而是对...
3.9k 4 分钟

# 前言 请先学习 Java 反射部分 # 静态代理 一方提供接口定义行为,并实现行为的基本操作。代理方在执行该行为时,可以加入自己的行为进去。这样需要提前知道接口的定义并进行实现才可以完成代理。而 Mybatis 这样的是无法预知代理接口的,我们就需要用到动态代理。 JDK 提供的反射框架就为我们很好地解决了动态代理的问题。 在使用 Mybatis 的时候,我们可以只定义一个 XxxMaper 接口,然后直接利用这个接口定义的抽象方法来进行增删改查操作,Mybatis 内部实际上利用了动态代理技术帮我们生成了这个接口的代理类。 # 动态代理 我们带着 2...
3.5k 3 分钟

# 前言 最初设计时,MyBatis 是一个 XML 驱动的框架。配置信息是基于 XML 的,而且映射语句也是定义在 XML 中的。而到了 MyBatis 3,有新的可用的选择了。MyBatis3 构建在基于全面而且强大的 Java 配置 API 之上。这个配置 API 是基于 XML 的 MyBatis 配置的基础,也是新的基于注解配置的基础。注解提供了一种简单的方式来实现简单映射语句,而不会引入大量的开销。 注意:不幸的是,Java 注解限制了它们的表现和灵活。最强大的 MyBatis 映射不能用注解来构建,那并不可笑,基于 Java 注解的配置离不开它的特性。 #...
2.1k 2 分钟

# 缓存机制 缓存机制其实就是提前将一部分内容放入缓存中,下次获取数据时可以直接从缓存中读取,而不是再向数据库查询,提升效率。 Mybatis 存在一级缓存和二级缓存。 # 一级缓存 一级缓存无法关闭,只能调整: try(SqlSession sqlSession = SqlUtil.getSqlSession()) { Mapper mapper = sqlSession.getMapper(Mapper.class); Student s1 = mapper.selectStudentBySid(1); Student s2 =...
6.8k 6 分钟

# 区间 DP LeetCode 上的 **【877. 石子游戏】,难度为【中等】**。 典型的区间 DP 问题:大区间状态值依赖小区间状态值。 假设 f[x][y] 表示的是先手在 [x,y] 区间的总数差值,那么最后只需要 return f[1][n] > 0 即可。从一般性推导递推式, f[l][r] ,如果先手先拿左边的,那么之后就是后手变先手, f[l+1][r] 就是 f[l][r] 中后手的总数差值,所以先拿左边得到的差值就是 p[l]-f[l+1][r] 。同理,拿右边得到的差值就是 p[r]-f[l][r-1] 。因为两边都想赢,所以 f[l][r] =...
3.4k 3 分钟

# 简单查询 驼峰命名配置: 一般数据库的字段名都是下划线分隔,但是 Java 里面是驼峰命名,就会导致查询时数据库的字段映射不到 Java 类里面,所以需要开启转换 <settings> <setting name="mapUnderscoreToCamelCase" value="true"/></settings>对于查询结果,我们可以做如下更改: 查询结果映射为实体类 <select id="studentList"...
6.2k 6 分钟

# 配置文件 之前我们最开始的 Mybatis-config.xml 是这样的: <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <environments...
4.1k 4 分钟

# 《妹吻》 全名为:我和女友的妹妹接吻了,作者...