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 可以动态判断和选择参数。

阅读更多

MyBatis:理解 mapper.xml 文件和使用

1
2
3
4
5
6
7
8
9
<mapper namespace="org.mybatis.mapper.UserMapper">
<!-- useGeneratedKeys:返回主键
keyProperty:返回的主键对应实体类的属性字段
-->
<insert id="saveUser" parameterType="com.mybatis.domain.User" useGeneratedKeys="true" keyProperty="id">
insert into user values(#{id},#{username},#{birthday},#{sex},#{address})
</insert>

</mapper>
  1. mapper:指定唯一的namespace,一般设置成mapper类的全路径名。
  2. insert:对应SQL中的insert插入语句。
    id:为该语句的属性,通常与mapper java 文件的方法名相同。
    parameterType:参入插入语句的参数类型。
    useGeneratedKeys:主键使用数据库自增策略,需要数据库底层支持,并返回主键到keyProperty指定的属性名。
    keyProperty:指示主键映射到实体类的属性名。
阅读更多

MyBatis:CRUD 注解配置

  CRUD注解:@Select,@Insert,@Update,@Delete
  配置项注解:@Options
  参数绑定注解:@Param, 将传入方法的参数绑定到 SQL 语句的参数上。
  **结果映射注解: **@Results—— 结果映射列表;@Result—— 在列和属性或字段之间的单独结果映射。

阅读更多