架构
接口层
接口层主要定义的是与数据库进行交互的方式。在Mybatis中,交互分为两种方式。- Mybatis提供的API
String statement = "com.viewscenes.netsupervisor.dao.UserMapper.getUserList"; List<User> result = sqlsession.selectList(statement);
- 使用Mapper接口
数据处理层
这是Mybatis的核心。它负责参数映射和动态SQL生成,生成之后Mybatis执行SQL语句,并将返回的结果映射成自定义的类型。关于参数映射和结果集转换,主要是靠typeHandlers。为便于理解,大概来看几个类型处理器。类型处理器 | Java类型 | JDBC类型 |
StringTypeHandler | java.lang.String | CHAR, VARCHAR |
DateTypeHandler | java.util.Date | TIMESTAMP |
BooleanTypeHandler | java.lang.Boolean, boolean | 数据库兼容的 BOOLEAN |
IntegerTypeHandler | java.lang.Integer, int | 数据库兼容的 NUMERIC 或 INTEGER |
框架支撑层
- 事务管理
- 连接池
- 缓存
SQL配置方式
大部分时候我们都是通过XML方式来配置SQL,不过Mybatis也支持通过注解来配置,就像下面这样。@Select({"<script>", "select * from user" "</script>"}) List<ConsultContent> getUserList();不过,不推荐这种方式来搞,想想吧,一个复杂的SQL,几十行上百行,写时一时爽,维护满面泪。
引导层
引导层是配置和启动MyBatis 配置信息的方式。MyBatis 提供两种方式来引导MyBatis :基于XML配置文件的方式和基于Java API 的方式。主要构件
- SqlSession 作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能。
- Executor MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护。
- StatementHandler 封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数、将Statement结果集转换成List集合。
- ParameterHandler 负责对用户传递的参数转换成JDBC Statement 所需要的参数。
- ResultSetHandler 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合。
- TypeHandler 负责java数据类型和jdbc数据类型之间的映射和转换。
- MappedStatement MappedStatement维护了一条<select|update|delete|insert>节点的封装。
- SqlSource 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回。
- BoundSql 表示动态生成的SQL语句以及相应的参数信息。
- Configuration MyBatis所有的配置信息都维持在Configuration对象之中。
原文地址:https://www.cnblogs.com/johnvwan/p/15645166.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。