MyBatis:typeHandler类型处理器及在映射中使用枚举
TypeHandler 即类型处理器,作用是将 Java 数据类型参数转成数据库的数据类型,或取出数据库数据转成 Java 数据类型。
MyBatis 为 TypeHandler 提供了系统定义,也支持用户自定义,系统定义就可以实现大部分功能了。如果用户自定义 TypeHandler ,则需要小心谨慎。例如自定义 TypeHandler 实现枚举转换。
TypeHandler 即类型处理器,作用是将 Java 数据类型参数转成数据库的数据类型,或取出数据库数据转成 Java 数据类型。
MyBatis 为 TypeHandler 提供了系统定义,也支持用户自定义,系统定义就可以实现大部分功能了。如果用户自定义 TypeHandler ,则需要小心谨慎。例如自定义 TypeHandler 实现枚举转换。
Mapper 通过类名和方法名就可以匹配到配置的SQL。
Mapper 执行的过程是通过 Executor
,StatementHandler
,ParameterHandler
和 ResultHandler
来完成数据库操作和结果返回的。
SqlSession 是一个接口,它本身并不复杂。构建 SqlSessionFactory 就可以拿到 SqlSession。SqlSession 提供了查询,插入,更新,删除的方法,在旧版本 MyBatis 或 iBatis 中常常使用这些接口方法,而在新版的 MyBatis 中建议使用 Mapper。
SqlSession 内部实现相当复杂,是整个 MyBatis 最难理解的部分。
SqlSessionFactory 是 MyBatis 的核心类,从这类名可以看出这是个 SqlSession 工厂类,其最重要的功能就是提供创建 MyBatis 的核心接口 SqlSession,所以需要先创建 SqlSessionFactory,为此需要提供配置文件和相关参数。
MyBatis 采用构造模式去创建 SqlSessionFactory,可以通过 SqlSessionFactoryBuild 去创建。构建分两步。
原文:Monoliths are not dinosaurs(2023/05/05),译:单体架构并不过时
亚马逊CTO Werner Vogels 的 Blog:https://www.allthingsdistributed.com/
构建可演进的软件系统是一种策略,而非信仰。 必须以开放的心态重新审视你的架构。
收集各种有用,好用的开源工具、框架、项目。
包括:管理后台、微信管理、支付系统、商城系统、前/后端框架、物流系统、仓库系统、单点登录、权限控制、众包平台等。
MySQL 中的全文索引的索引类型是 FULLTEXT 。
MySQL 的全文索引只能用于 InnoDB 或 MyISAM 表,并且只能为 CHAR、VARCHAR 或 TEXT 列创建。
官方文档-15.6.2.4 InnoDB Full-Text Indexes
Full-text indexes
(全文索引)可在基于文本类型的列(CHAR, VARCHAR 或 text 列) 上创建,可以加快对这些列中包含的数据的查询和DML操作。
全文索引被定义为CREATE TABLE
语句的一部分,或使用ALTER TABLE
或CREATE index
添加到现有表。
要执行全文索引需要使用 MATCH() ... AGAINST
语法。Section 12.10, “Full-Text Search Functions”.
在互联网系统架构中,当系统遇到高并发压力带来性能瓶颈时,应用层可以通过水平伸缩采用分布式集群部署来提高系统的处理能力。
而承受着最大处理压力,难以被水平伸缩的是数据存储部分。数据存储是整个系统的底座、基石。数据存储架构的变化往往会导致整个系统架构的改造。所以数据存储架构设计就显得尤其重要。
Spring Boot 应用,修改了配置文件中的参数,不重启应用使修改生效,使注入配置参数的 Bean 更新生效。
要满足配置文件修改,就需要将Spring Boot的配置文件外部化,而不是在 Spring Boot Jar 包类路径下的文件。
Spring Boot的配置文件外部化支持两个路径:file:./
和file:./config/
,即与 Jar 同级目录中的配置文件,和 Jar 所在目录的 config
子目录中的配置文件。
本文主要参考了 spring-cloud-context 的 refresh 接口的实现。