随笔分类 - java
摘要:MySQL与分布式 主从复制 其思路和redis的主从复制思路相似,也是采用增量复制的方式。 MySQL在运行过程中,会记录二进制日志,所有的DML和DDL操作都会被记录到日志中,主库将操作记录复制给从库,从库也运行一次,就实现了主从复制。注意:它不会再一开始进行全量复制,所以最好在开始主从之前将数
阅读全文
摘要:Redis与分布式 Redis是一个基于内存的高性能数据库! 主从复制 主从复制:将一台Redis服务器的数据复制到其他Redis服务器,前者是主节点(Master),后者是从节点(Slave),数据的复制是单向的,只能从主节点到从节点。Master以写为主,Slave以读为主。 这样的好处有: 实
阅读全文
摘要:MyBatis-plus拓展 逻辑删除 逻辑删除就是增加一个字段表示这个数据的状态,通过状态来显示数据或隐藏数据,而不是真正的删除。 MyBatis-plus使用@TableLogic注解来标注逻辑删除字段: public class User extends Model<User> { @Tabl
阅读全文
摘要:MyBatis-plus高级应用 主键策略 在MyBatis-plus中使用@TableId注解来设置主键生成策略。 在设置好自增策略后,在新增数据时,就不用给主键属性赋值了,数据库会自动生成主键的值。 auto策略 该策略为跟随数据库表的主键策略,如果数据库表的主键设置为自增,那么主键策略就是自增
阅读全文
摘要:MyBatis-plus进阶 映射 自动映射规则 表名和实体类名映射-》 表名user 实体类名User 字段名和实体类属性名映射-》字段名name 实体类属性名name 这里需要注意:User类里的 private String name; 这个name不是属性名,而是变量名。 那么什么是属性名呢
阅读全文
摘要:MyBatis-plus简述 MyBatis-plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。 内置代码生成器、内置分页插件、内置性能分析插件、内置全局拦截插件等。。。 快速应用 新建一个空的SpringBoot项目 引入依赖,MyBati
阅读全文
摘要:MyBatis的缓存 缓存的作用:通过减少IO的方式,提高程序的执行效率。 mybaits的缓存:将select语句的查询结果放到缓存(内存)中。下一次还是这条select语句的话,直接从缓存中获取,不再查数据库。一方面是减少IO,另一方面不再执行繁琐的查找算法。从而提升效率。 mybatis的缓存
阅读全文
摘要:动态SQL if标签 一般应用在多条件查询中 <select id="selectByMultipleCondition" resultType="car" parameterType="Car"> SELECT id, car_num AS carNum, brand, guide_price A
阅读全文
摘要:实际开发中应用细节 #{}和${}的区别? ‘#{}’:先编译sql语句,再给占位符传值,底层是PreparedStatement实现,可以防止sql注入,比较常用。 ‘#{}’传来的字符串类型的数据会自带单引号,比如:user_name=#{name} 会编译为 user_name=‘张三’ ${
阅读全文
摘要:MyBatis核心配置文件详解 多环境 <!--一个环境对应一个数据库,开发环境和生产环境可以对应不同的环境 一般一个数据库对应一个sqlSessionFactory对象,一个sqlSessionFactory对象对应一个环境 default表示默认环境--> <environments defau
阅读全文
摘要:了解Mybatis Mybatis是一个持久层框架,半自动化ORM(Hibernate属于全自动化ORM)。 Mybatis的特点: 支持定制化sql、存储过程、基本映射以及高级映射 避免了几乎所有的JDBC代码中手动设置参数以及获取结果集 支持XML开发,也支持注解式开发 将接口和Java的poj
阅读全文
摘要:pagehelper整合 引入依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>2.1.0</versio
阅读全文
摘要:异常处理 在controller层程序出现异常,并且未被捕获,springboot提供的异常处理机制将会生效。 springmvc的错误处理方案 如果使用了springmvc的错误处理方案,spring boot的错误处理方案不会生效 局部控制@ExceptionHandler 在控制器中写一个方法
阅读全文
摘要:内容协商 内容协商机制是指服务器根据客户端的请求来决定返回资源的表现形式,由springmvc提供。 就是客户端要什么样的格式,客户端就返回什么样的格式。比如json或者xml。 实现内容协商的两种方式 通过HTTP请求头(如accept) 通过请求参数如:format 指定客户端接收的数据类型。
阅读全文
摘要:springboot自动配置 自动配置了大量组件,配置信息可以在application.properties文件中修改。 当添加了特定的Starter POM后,springboot会根据类路径上的jar包来自动配置bean(比如:springboot发现类路径上的MyBatis相关类,spring
阅读全文
摘要:整合MyBatis 引入依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>4.0.1</version> <
阅读全文
摘要:POM文件中为何要以继承的方式引入SpringBoot? 继承父工程的优势 依赖管理:在父工程中定义依赖的版本,子模块直接引用而不必指定版本号 插件管理:在父工程中配置插件,子模块直接使用 属性设置:在父工程中定义一些通用属性,如项目编码、java版本等 统一配置:可以统一多个子模块的构建配置,确保
阅读全文
摘要:源码下载地址:配套源码地址 设计 shiro-mgt:用户、角色、资源的定义,资源对应网关的定义,动态链的定义 shiro鉴权服务集群:会话信息、Realm信息 dubbo-app集群:实际业务相关 模块依赖 Springboot-shiro-gateway-handler功能: dubbo业务服务
阅读全文
摘要:源码下载地址:配套源码地址 存在问题 分布式会话缓存是基于浏览器的Cookie机制,如果用户禁用Cookie,则无法实现功能。 解决方案 使用基于jwt的token生成方案: 用户登录之后,获得会话的SessionID,使用jwt根据SessionID颁发签名并设置过期时间(与Session过期时间
阅读全文
摘要:源码下载地址:配套源码地址 shiro_实现分布式会话SessionManager、限制密码重试次数和并发登录控制 要解决的问题 解决方案 所有服务器的Session都存储到redis服务器中,通过redis实现Session共享。 Q$L(B6.pngQ$L(B6.png)) 首先,继承Abstr
阅读全文
浙公网安备 33010602011771号