 Mybatis 3.3.0 中文用户指南注意在使用自动检索(autodiscovery)功能的时候,只能通过注解方式来指定 JDBC 的类型。 你能创建一个泛型类型处理器,它可以处理多于一个类。为达到此目的, 需要增加一个接收该类作为参数的构造器,这样在构造一个类 型处理器的时候 MyBatis 就会传入一个具体的类。 //GenericTypeHandler.java public class GenericTypeHandler Mybatis 3.3.0 中文用户指南注意在使用自动检索(autodiscovery)功能的时候,只能通过注解方式来指定 JDBC 的类型。 你能创建一个泛型类型处理器,它可以处理多于一个类。为达到此目的, 需要增加一个接收该类作为参数的构造器,这样在构造一个类 型处理器的时候 MyBatis 就会传入一个具体的类。 //GenericTypeHandler.java public class GenericTypeHandler- 构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。 如果想覆盖对象工厂的默认行为,则 可以通过创建自己的对象工厂来实现。比如: // ExampleObjectFactory.java public class name="someProperty" value="100"/> ObjectFactory 接口很简单,它包含两个创建用的方法,一个是处理默认构造方法的,另外一个是处理带参数的构造方法的。 最 后,setProperties 方法可以被用来配置 ObjectFactory,在初始化你的 ObjectFactory 实例后, objectFactory 元素体中定义的 0 码力 | 98 页 | 2.03 MB | 1 年前3
 Apache ShardingSphere 中文文档 5.1.1tbl_name WHERE col3 = ? SELECT 子句不支持 * 和内置分 布式主键生成器 无 SELECT MAX(tbl_name.col1) FROM tbl_name 查询列是函数表达式时,查询列 前不能使用表名 使用表 别名 分页 完全支持 MySQL、PostgreSQL 和 Oracle 的分页查询,SQLServer 由于分页查询较为复杂,仅部分支持。 4 uteSQL/: 表示执行 SQL 异常的日志。 5.1.8 不支持项 DataSource 接口 • 不支持 timeout 相关操作。 Connection 接口 • 不支持存储过程,函数,游标的操作; • 不支持执行 native SQL; • 不支持 savepoint 相关操作; • 不支持 Schema/Catalog 的操作; • 不支持自定义类型映射。 5.1. 解析 分为词法解析和语法解析。先通过词法解析器将 SQL 拆分为一个个不可再分的单词。再使用语法解析器 对 SQL 进行理解,并最终提炼出解析上下文。解析上下文包括表、选择项、排序项、分组项、聚合函数、 分页信息、查询条件以及可能需要修改的占位符的标记。 7.2.2 SQL 路由 根据解析上下文匹配用户配置的分片策略,并生成路由路径。目前支持分片路由和广播路由。 7.2.3 SQL 改写0 码力 | 409 页 | 4.47 MB | 1 年前3 Apache ShardingSphere 中文文档 5.1.1tbl_name WHERE col3 = ? SELECT 子句不支持 * 和内置分 布式主键生成器 无 SELECT MAX(tbl_name.col1) FROM tbl_name 查询列是函数表达式时,查询列 前不能使用表名 使用表 别名 分页 完全支持 MySQL、PostgreSQL 和 Oracle 的分页查询,SQLServer 由于分页查询较为复杂,仅部分支持。 4 uteSQL/: 表示执行 SQL 异常的日志。 5.1.8 不支持项 DataSource 接口 • 不支持 timeout 相关操作。 Connection 接口 • 不支持存储过程,函数,游标的操作; • 不支持执行 native SQL; • 不支持 savepoint 相关操作; • 不支持 Schema/Catalog 的操作; • 不支持自定义类型映射。 5.1. 解析 分为词法解析和语法解析。先通过词法解析器将 SQL 拆分为一个个不可再分的单词。再使用语法解析器 对 SQL 进行理解,并最终提炼出解析上下文。解析上下文包括表、选择项、排序项、分组项、聚合函数、 分页信息、查询条件以及可能需要修改的占位符的标记。 7.2.2 SQL 路由 根据解析上下文匹配用户配置的分片策略,并生成路由路径。目前支持分片路由和广播路由。 7.2.3 SQL 改写0 码力 | 409 页 | 4.47 MB | 1 年前3
 Apache ShardingSphere 中文文档 5.1.0tbl_name WHERE col3 = ? SELECT 子句不支持 * 和内置分 布式主键生成器 无 SELECT MAX(tbl_name.col1) FROM tbl_name 查询列是函数表达式时,查询列 前不能使用表名 使用表 别名 分页 完全支持 MySQL、PostgreSQL 和 Oracle 的分页查询,SQLServer 由于分页查询较为复杂,仅部分支持。 4 cuteSQL/: 表示执行 SQL 异常的日志。 5.1.8 不支持项 DataSource 接口 • 不支持 timeout 相关操作 Connection 接口 • 不支持存储过程,函数,游标的操作 • 不支持执行 native SQL • 不支持 savepoint 相关操作 • 不支持 Schema/Catalog 的操作 • 不支持自定义类型映射 5.1. ShardingSphere-JDBC 解析 分为词法解析和语法解析。先通过词法解析器将 SQL 拆分为一个个不可再分的单词。再使用语法解析器 对 SQL 进行理解,并最终提炼出解析上下文。解析上下文包括表、选择项、排序项、分组项、聚合函数、 分页信息、查询条件以及可能需要修改的占位符的标记。 7.2.2 SQL 路由 根据解析上下文匹配用户配置的分片策略,并生成路由路径。目前支持分片路由和广播路由。 7.2.3 SQL 改写0 码力 | 406 页 | 4.40 MB | 1 年前3 Apache ShardingSphere 中文文档 5.1.0tbl_name WHERE col3 = ? SELECT 子句不支持 * 和内置分 布式主键生成器 无 SELECT MAX(tbl_name.col1) FROM tbl_name 查询列是函数表达式时,查询列 前不能使用表名 使用表 别名 分页 完全支持 MySQL、PostgreSQL 和 Oracle 的分页查询,SQLServer 由于分页查询较为复杂,仅部分支持。 4 cuteSQL/: 表示执行 SQL 异常的日志。 5.1.8 不支持项 DataSource 接口 • 不支持 timeout 相关操作 Connection 接口 • 不支持存储过程,函数,游标的操作 • 不支持执行 native SQL • 不支持 savepoint 相关操作 • 不支持 Schema/Catalog 的操作 • 不支持自定义类型映射 5.1. ShardingSphere-JDBC 解析 分为词法解析和语法解析。先通过词法解析器将 SQL 拆分为一个个不可再分的单词。再使用语法解析器 对 SQL 进行理解,并最终提炼出解析上下文。解析上下文包括表、选择项、排序项、分组项、聚合函数、 分页信息、查询条件以及可能需要修改的占位符的标记。 7.2.2 SQL 路由 根据解析上下文匹配用户配置的分片策略,并生成路由路径。目前支持分片路由和广播路由。 7.2.3 SQL 改写0 码力 | 406 页 | 4.40 MB | 1 年前3
 Apache ShardingSphere 中文文档 5.0.0tbl_name WHERE col3 = ? SELECT 子句不支持 * 和内置分 布式主键生成器 无 SELECT MAX(tbl_name.col1) FROM tbl_name 查询列是函数表达式时,查询列 前不能使用表名 使用表 别名 分页 完全支持 MySQL、PostgreSQL 和 Oracle 的分页查询,SQLServer 由于分页查询较为复杂,仅部分支持。 分页性能 . load-balance-algorithm-class-name= # 从库负载均衡算法类名称。该类需实现 MasterSlaveLoadBalanceAlgorithm 接口且提供无参数构造器 spring.shardingsphere.sharding.master-slave-rules. Apache ShardingSphere 中文文档 5.0.0tbl_name WHERE col3 = ? SELECT 子句不支持 * 和内置分 布式主键生成器 无 SELECT MAX(tbl_name.col1) FROM tbl_name 查询列是函数表达式时,查询列 前不能使用表名 使用表 别名 分页 完全支持 MySQL、PostgreSQL 和 Oracle 的分页查询,SQLServer 由于分页查询较为复杂,仅部分支持。 分页性能 . load-balance-algorithm-class-name= # 从库负载均衡算法类名称。该类需实现 MasterSlaveLoadBalanceAlgorithm 接口且提供无参数构造器 spring.shardingsphere.sharding.master-slave-rules.- . load-balance-algorithm-type= standard.precise-algorithm-class-name= # 精确分片算法类名称,用于 = 和 IN。该类需实现 PreciseShardingAlgorithm 接口并提供无参数的构造器 spring.shardingsphere.sharding.tables. - .database-strategy. 5.1. ShardingSphere-JDBC 0 码力 | 385 页 | 4.26 MB | 1 年前3
 Apache ShardingSphere 中文文档 5.0.0-alpha解析 分为词法解析和语法解析。先通过词法解析器将 SQL 拆分为一个个不可再分的单词。再使用语法解析器 对 SQL 进行理解,并最终提炼出解析上下文。解析上下文包括表、选择项、排序项、分组项、聚合函数、 分页信息、查询条件以及可能需要修改的占位符的标记。 执行器优化 合并和优化分片条件,如 OR 等。 SQL 路由 根据解析上下文匹配用户配置的分片策略,并生成路由路径。目前支持分片路由和广播路由。 解析之后的为抽象语法树见下图。 为了便于理解,抽象语法树中的关键字的 Token 用绿色表示,变量的 Token 用红色表示,灰色表示需要 进一步拆分。 最后,通过 visitor 对抽象语法树遍历构造域模型,通过域模型(SQLStatement)去提炼分片所需的 上下文,并标记有可能需要改写的位置。供分片使用的解析上下文包含查询选择项(Select Items)、表信 息(Table)、分片条件(Sharding 满足直接路由的条件相对苛刻,它需要通过 Hint(使用 HintAPI 直接指定路由至库表)方式分片,并且 是只分库不分表的前提下,则可以避免 SQL 解析和之后的结果归并。因此它的兼容性最好,可以执行包 括子查询、自定义函数等复杂情况的任意 SQL。直接路由还可以用于分片键不在 SQL 中的场景。例如,设 置用于数据库分片的键为 3, hintManager.setDatabaseShardingValue(3);0 码力 | 301 页 | 3.44 MB | 1 年前3 Apache ShardingSphere 中文文档 5.0.0-alpha解析 分为词法解析和语法解析。先通过词法解析器将 SQL 拆分为一个个不可再分的单词。再使用语法解析器 对 SQL 进行理解,并最终提炼出解析上下文。解析上下文包括表、选择项、排序项、分组项、聚合函数、 分页信息、查询条件以及可能需要修改的占位符的标记。 执行器优化 合并和优化分片条件,如 OR 等。 SQL 路由 根据解析上下文匹配用户配置的分片策略,并生成路由路径。目前支持分片路由和广播路由。 解析之后的为抽象语法树见下图。 为了便于理解,抽象语法树中的关键字的 Token 用绿色表示,变量的 Token 用红色表示,灰色表示需要 进一步拆分。 最后,通过 visitor 对抽象语法树遍历构造域模型,通过域模型(SQLStatement)去提炼分片所需的 上下文,并标记有可能需要改写的位置。供分片使用的解析上下文包含查询选择项(Select Items)、表信 息(Table)、分片条件(Sharding 满足直接路由的条件相对苛刻,它需要通过 Hint(使用 HintAPI 直接指定路由至库表)方式分片,并且 是只分库不分表的前提下,则可以避免 SQL 解析和之后的结果归并。因此它的兼容性最好,可以执行包 括子查询、自定义函数等复杂情况的任意 SQL。直接路由还可以用于分片键不在 SQL 中的场景。例如,设 置用于数据库分片的键为 3, hintManager.setDatabaseShardingValue(3);0 码力 | 301 页 | 3.44 MB | 1 年前3
 Apache ShardingSphere 中文文档 5.1.2tbl_name WHERE col3 = ? SELECT 子句不支持 * 和内置分 布式主键生成器 无 SELECT MAX(tbl_name.col1) FROM tbl_name 查询列是函数表达式时,查询列 前不能使用表名 使用表 别名 分页 完全支持 MySQL、PostgreSQL 和 Oracle 的分页查询,SQLServer 由于分页查询较为复杂,仅部分支持。 4 uteSQL/: 表示执行 SQL 异常的日志。 5.1.9 不支持项 DataSource 接口 • 不支持 timeout 相关操作。 Connection 接口 • 不支持存储过程,函数,游标的操作; • 不支持执行 native SQL; • 不支持 savepoint 相关操作; • 不支持 Schema/Catalog 的操作; • 不支持自定义类型映射。 5.1. 解析 分为词法解析和语法解析。先通过词法解析器将 SQL 拆分为一个个不可再分的单词。再使用语法解析器 对 SQL 进行理解,并最终提炼出解析上下文。解析上下文包括表、选择项、排序项、分组项、聚合函数、 分页信息、查询条件以及可能需要修改的占位符的标记。 7.2.2 SQL 路由 根据解析上下文匹配用户配置的分片策略,并生成路由路径。目前支持分片路由和广播路由。 7.2.3 SQL 改写0 码力 | 446 页 | 4.67 MB | 1 年前3 Apache ShardingSphere 中文文档 5.1.2tbl_name WHERE col3 = ? SELECT 子句不支持 * 和内置分 布式主键生成器 无 SELECT MAX(tbl_name.col1) FROM tbl_name 查询列是函数表达式时,查询列 前不能使用表名 使用表 别名 分页 完全支持 MySQL、PostgreSQL 和 Oracle 的分页查询,SQLServer 由于分页查询较为复杂,仅部分支持。 4 uteSQL/: 表示执行 SQL 异常的日志。 5.1.9 不支持项 DataSource 接口 • 不支持 timeout 相关操作。 Connection 接口 • 不支持存储过程,函数,游标的操作; • 不支持执行 native SQL; • 不支持 savepoint 相关操作; • 不支持 Schema/Catalog 的操作; • 不支持自定义类型映射。 5.1. 解析 分为词法解析和语法解析。先通过词法解析器将 SQL 拆分为一个个不可再分的单词。再使用语法解析器 对 SQL 进行理解,并最终提炼出解析上下文。解析上下文包括表、选择项、排序项、分组项、聚合函数、 分页信息、查询条件以及可能需要修改的占位符的标记。 7.2.2 SQL 路由 根据解析上下文匹配用户配置的分片策略,并生成路由路径。目前支持分片路由和广播路由。 7.2.3 SQL 改写0 码力 | 446 页 | 4.67 MB | 1 年前3
 Apache ShardingSphere v5.5.0 中文文档tbl_name WHERE col3 = ?(SELECT 子 句不支持 * 和内置分布式主键生成器) • SELECT MAX(tbl_name.col1) FROM tbl_name(查询列是函数表达式时,查询列前不能使用表名, 可以使用表别名) 其他: • 分片规则中配置的真实表、分片列和分布式序列需要和数据库中的列保持大小写一致。 8.2 分布式事务 8.2.1 背景 数据库事务需要满足 document 相关参考 • YAML 配置:广播表 读写分离 背景信息 Java API 形式配置的读写分离可以方便的适用于各种场景,不依赖额外的 jar 包,用户只需要通过 java 代 码构造读写分离数据源便可以使用读写分离功能。 参数解释 配置入口 类名称:org.apache.shardingsphere.readwritesplitting.config.ReadwriteS commit() 和 rollback() 方法,这是被允许的。 2. 在函数上使用 Jakarta EE 8 的 javax.transaction.Transactional 注解,这是被允许的。 9.1. ShardingSphere-JDBC 130 Apache ShardingSphere document 3. 在函数上使用 Jakarta EE 9/10 的 jakarta.transaction0 码力 | 557 页 | 4.61 MB | 1 年前3 Apache ShardingSphere v5.5.0 中文文档tbl_name WHERE col3 = ?(SELECT 子 句不支持 * 和内置分布式主键生成器) • SELECT MAX(tbl_name.col1) FROM tbl_name(查询列是函数表达式时,查询列前不能使用表名, 可以使用表别名) 其他: • 分片规则中配置的真实表、分片列和分布式序列需要和数据库中的列保持大小写一致。 8.2 分布式事务 8.2.1 背景 数据库事务需要满足 document 相关参考 • YAML 配置:广播表 读写分离 背景信息 Java API 形式配置的读写分离可以方便的适用于各种场景,不依赖额外的 jar 包,用户只需要通过 java 代 码构造读写分离数据源便可以使用读写分离功能。 参数解释 配置入口 类名称:org.apache.shardingsphere.readwritesplitting.config.ReadwriteS commit() 和 rollback() 方法,这是被允许的。 2. 在函数上使用 Jakarta EE 8 的 javax.transaction.Transactional 注解,这是被允许的。 9.1. ShardingSphere-JDBC 130 Apache ShardingSphere document 3. 在函数上使用 Jakarta EE 9/10 的 jakarta.transaction0 码力 | 557 页 | 4.61 MB | 1 年前3
 传智播客 mybatis 框架课程讲义的运行环境等信息。 mapper.xml 文件即 sql 映射文件,文件中配置了操作数据库的 sql 语句。此文件需要在 SqlMapConfig.xml 中加载。 2、 通过 mybatis 环境等配置信息构造 SqlSessionFactory 即会话工厂 3、 由会话工厂创建 sqlSession 即会话,操作数据库需要通过 sqlSession 进行。 4、 mybatis 底层自定义了 Executor 的自增原理执行 完 insert 语句之后才将主键生成,所以这里 selectKey 的执行顺序为 after resultType:返回的主键是什么类型 LAST_INSERT_ID():是 mysql 的函数,返回 auto_increment 自增列新记录 id 值。 1.6.7.2.4 Mysql 使用 uuid 实现主键 需要增加通过 select uuid()得到 uuid 值 传智播客 mybatis 框架课程讲义的运行环境等信息。 mapper.xml 文件即 sql 映射文件,文件中配置了操作数据库的 sql 语句。此文件需要在 SqlMapConfig.xml 中加载。 2、 通过 mybatis 环境等配置信息构造 SqlSessionFactory 即会话工厂 3、 由会话工厂创建 sqlSession 即会话,操作数据库需要通过 sqlSession 进行。 4、 mybatis 底层自定义了 Executor 的自增原理执行 完 insert 语句之后才将主键生成,所以这里 selectKey 的执行顺序为 after resultType:返回的主键是什么类型 LAST_INSERT_ID():是 mysql 的函数,返回 auto_increment 自增列新记录 id 值。 1.6.7.2.4 Mysql 使用 uuid 实现主键 需要增加通过 select uuid()得到 uuid 值- 构造查询条件user对象 User user = new User(); user.setId(1); user.setUsername("管理员"); //传递user对象查询用户列表 List - list 0 码力 | 75 页 | 1.16 MB | 1 年前3
 Apache ShardingSphere 中文文档 5.2.0tbl_name WHERE col3 = ?(SELECT 子 句不支持 * 和内置分布式主键生成器) • SELECT MAX(tbl_name.col1) FROM tbl_name(查询列是函数表达式时,查询列前不能使用表名, 可以使用表别名) 3.2 分布式事务 3.2.1 背景 数据库事务需要满足 ACID(原子性、一致性、隔离性、持久性)四个特性。 • 原子性(Atomic • 核心特性:数据分片 • 开发者指南:数据分片 读写分离 背景信息 Java API 形式配置的读写分离可以方便的适用于各种场景,不依赖额外的 jar 包,用户只需要通过 java 代 码构造读写分离数据源便可以使用读写分离功能。 参数解释 配置入口 类名称:org.apache.shardingsphere.readwritesplitting.api.ReadwriteSpli conf 和 registry.conf 文件。 4.1.6 不支持项 DataSource 接口 • 不支持 timeout 相关操作。 Connection 接口 • 不支持存储过程,函数,游标的操作; • 不支持执行 native SQL; • 不支持 savepoint 相关操作; • 不支持 Schema/Catalog 的操作; • 不支持自定义类型映射。 Statement0 码力 | 449 页 | 5.85 MB | 1 年前3 Apache ShardingSphere 中文文档 5.2.0tbl_name WHERE col3 = ?(SELECT 子 句不支持 * 和内置分布式主键生成器) • SELECT MAX(tbl_name.col1) FROM tbl_name(查询列是函数表达式时,查询列前不能使用表名, 可以使用表别名) 3.2 分布式事务 3.2.1 背景 数据库事务需要满足 ACID(原子性、一致性、隔离性、持久性)四个特性。 • 原子性(Atomic • 核心特性:数据分片 • 开发者指南:数据分片 读写分离 背景信息 Java API 形式配置的读写分离可以方便的适用于各种场景,不依赖额外的 jar 包,用户只需要通过 java 代 码构造读写分离数据源便可以使用读写分离功能。 参数解释 配置入口 类名称:org.apache.shardingsphere.readwritesplitting.api.ReadwriteSpli conf 和 registry.conf 文件。 4.1.6 不支持项 DataSource 接口 • 不支持 timeout 相关操作。 Connection 接口 • 不支持存储过程,函数,游标的操作; • 不支持执行 native SQL; • 不支持 savepoint 相关操作; • 不支持 Schema/Catalog 的操作; • 不支持自定义类型映射。 Statement0 码力 | 449 页 | 5.85 MB | 1 年前3
 Apache ShardingSphere 中文文档 5.4.1tbl_name WHERE col3 = ?(SELECT 子 句不支持 * 和内置分布式主键生成器) • SELECT MAX(tbl_name.col1) FROM tbl_name(查询列是函数表达式时,查询列前不能使用表名, 可以使用表别名) 其他: • 分片规则中配置的真实表、分片列和分布式序列需要和数据库中的列保持大小写一致。 8.2 分布式事务 8.2.1 背景 数据库事务需要满足 Apache ShardingSphere document 读写分离 背景信息 Java API 形式配置的读写分离可以方便的适用于各种场景,不依赖额外的 jar 包,用户只需要通过 java 代 码构造读写分离数据源便可以使用读写分离功能。 参数解释 配置入口 类名称:org.apache.shardingsphere.readwritesplitting.api.ReadwriteSpli 进行检索,并安装到 ShardingSphere 中。 9.1.5 不支持项 DataSource 接口 • 不支持 timeout 相关操作。 Connection 接口 • 不支持存储过程,函数,游标的操作; • 不支持执行 native SQL; • 不支持 savepoint 相关操作; • 不支持 Schema/Catalog 的操作; • 不支持自定义类型映射。 Statement0 码力 | 530 页 | 4.49 MB | 1 年前3 Apache ShardingSphere 中文文档 5.4.1tbl_name WHERE col3 = ?(SELECT 子 句不支持 * 和内置分布式主键生成器) • SELECT MAX(tbl_name.col1) FROM tbl_name(查询列是函数表达式时,查询列前不能使用表名, 可以使用表别名) 其他: • 分片规则中配置的真实表、分片列和分布式序列需要和数据库中的列保持大小写一致。 8.2 分布式事务 8.2.1 背景 数据库事务需要满足 Apache ShardingSphere document 读写分离 背景信息 Java API 形式配置的读写分离可以方便的适用于各种场景,不依赖额外的 jar 包,用户只需要通过 java 代 码构造读写分离数据源便可以使用读写分离功能。 参数解释 配置入口 类名称:org.apache.shardingsphere.readwritesplitting.api.ReadwriteSpli 进行检索,并安装到 ShardingSphere 中。 9.1.5 不支持项 DataSource 接口 • 不支持 timeout 相关操作。 Connection 接口 • 不支持存储过程,函数,游标的操作; • 不支持执行 native SQL; • 不支持 savepoint 相关操作; • 不支持 Schema/Catalog 的操作; • 不支持自定义类型映射。 Statement0 码力 | 530 页 | 4.49 MB | 1 年前3
共 15 条
- 1
- 2













