MyBatis:SqlSession下的四大对象
Mapper 通过类名和方法名就可以匹配到配置的SQL。
Mapper 执行的过程是通过 Executor,StatementHandler,ParameterHandler 和 ResultHandler 来完成数据库操作和结果返回的。
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 去创建。构建分两步。
最近做报表统计,对日期时间范围查找的比较多,经常会遇到,也有些之前涉及相关的零散笔记,现整理如下。
MyBatis 在接收日期时间参数进行日期时间范围查询时,有些需要注意的地方,例如日期时间参数的数据类型可能是Date或String类型,或传参与数据库存储的日期时间格式并不一致等情况。
此情况更多与 SQL 的字符串拼接或日期时间格式转换有关。
整理历史项目,Mybatis 配置文件及整合Spring,主要配置记录。只做参考,实际开发已不使用此配置。
MyBatis 的强大特性之一便是它的动态 SQL,Mybatis 在对 SQL 语句进行预编译之前,会对 SQL 进行动态解析,解析为一个 BoundSql 对象,同时对动态 SQL 进行处理。
动态 SQL 主要通过OGNL表达式实现 SQL 可以动态判断和选择参数。
实现项目开发中,存在一对一,一对多,多对多的映射关系,Mybatis对这些映射关系提供了完全的支持。
Mybatis本置文件mybatis-config.xml
1 | <mapper namespace="org.mybatis.mapper.UserMapper"> |
namespace,一般设置成mapper类的全路径名。SQL中的insert插入语句。mapper java 文件的方法名相同。keyProperty指定的属性名。 CRUD注解:@Select,@Insert,@Update,@Delete。
配置项注解:@Options。
参数绑定注解:@Param, 将传入方法的参数绑定到 SQL 语句的参数上。
**结果映射注解: **@Results—— 结果映射列表;@Result—— 在列和属性或字段之间的单独结果映射。