MyBatis:typeHandler类型处理器及在映射中使用枚举

TypeHandler 即类型处理器,作用是将 Java 数据类型参数转成数据库的数据类型,或取出数据库数据转成 Java 数据类型。

MyBatis 为 TypeHandler 提供了系统定义,也支持用户自定义,系统定义就可以实现大部分功能了。如果用户自定义 TypeHandler ,则需要小心谨慎。例如自定义 TypeHandler 实现枚举转换。

阅读更多

MyBatis:SqlSession下的四大对象

Mapper 通过类名和方法名就可以匹配到配置的SQL。

Mapper 执行的过程是通过 ExecutorStatementHandlerParameterHandlerResultHandler 来完成数据库操作和结果返回的。

阅读更多

MyBatis:SqlSession运行过程

SqlSession 是一个接口,它本身并不复杂。构建 SqlSessionFactory 就可以拿到 SqlSession。SqlSession 提供了查询,插入,更新,删除的方法,在旧版本 MyBatis 或 iBatis 中常常使用这些接口方法,而在新版的 MyBatis 中建议使用 Mapper。

SqlSession 内部实现相当复杂,是整个 MyBatis 最难理解的部分。

阅读更多

MyBatis:SqlSessionFactory构建过程

SqlSessionFactory 是 MyBatis 的核心类,从这类名可以看出这是个 SqlSession 工厂类,其最重要的功能就是提供创建 MyBatis 的核心接口 SqlSession,所以需要先创建 SqlSessionFactory,为此需要提供配置文件和相关参数。

MyBatis 采用构造模式去创建 SqlSessionFactory,可以通过 SqlSessionFactoryBuild 去创建。构建分两步。

阅读更多

MyBatis:不同类型的日期时间入参的范围查询

  最近做报表统计,对日期时间范围查找的比较多,经常会遇到,也有些之前涉及相关的零散笔记,现整理如下。

  MyBatis 在接收日期时间参数进行日期时间范围查询时,有些需要注意的地方,例如日期时间参数的数据类型可能是DateString类型,或传参与数据库存储的日期时间格式并不一致等情况。

  此情况更多与 SQL 的字符串拼接或日期时间格式转换有关。

阅读更多

MyBatis:动态SQL与参数绑定(#{} 和 ${})

MyBatis 的强大特性之一便是它的动态 SQL,Mybatis 在对 SQL 语句进行预编译之前,会对 SQL 进行动态解析,解析为一个 BoundSql 对象,同时对动态 SQL 进行处理。

动态 SQL 主要通过OGNL表达式实现 SQL 可以动态判断和选择参数。

阅读更多