MyBatis总结

简介

MyBatis是一款持久层框架,是基于JDBC的开发。

基本使用

mybatis配置文件设计标签和顶层结构如下:

  • configuration(配置)

    • properties(属性)

    • settings(设置)

    • typeAliases(类型别名)

    • typeHandlers(类型处理器)

    • objectFactory(对象工厂)

    • plugins(插件)

    • environments(环境配置)

      • environment(环境变量)

        • transactionManager(事务管理器)

        • dataSource(数据源)

    • databaseIdProvider(数据库厂商标识)

    • mappers(映射器)

日志输出

标签中设置日志


 
 

 #{} 和${}

  • Mybatis会将SQL语句中的#{}转换为问号占位符。
  • ${}底层Mybatis做的是字符串拼接操作。

数据输入

  • 单个简单数据
  • 实体类类型
  • 零散的数据(可用@Param("empId")来表明)
  • Map类型

数据输出

  • 单个简单数据
  • 实体类类型
  • 零散的数据(可用@Param("empId")来表明)
  • Map类型
  • List类型
  • 返回主键值
    Mybatis是将自增主键的值设置到实体类对象中,而不是以Mapper接口方法返回值的形式返回。
    • 自增长类型主键:keyProperty
    • 非自增长类型主键:标签
  • 实体类属性和数据库字段对应关系
    • 别名对应:将字段的别名设置成和实体类属性一致
    • 将字段的别名设置成和实体类属性
    • 使用reshultMap:自定义对应关系(这个确实牛比)

标签属性总结

属性 描述
id 在命名空间中唯一的标识符,可以被用来引用这条语句。
timeout 这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为未设置(unset)(依赖数据库驱动)。
statementType 可选 STATEMENT,PREPARED 或 CALLABLE。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,默认值:PREPARED。
useGeneratedKeys (仅适用于 insert 和 update)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系型数据库管理系统的自动递增字段),默认值:false。
keyProperty (仅适用于 insert 和 update)指定能够唯一识别对象的属性,MyBatis 会使用 getGeneratedKeys 的返回值或 insert 语句的 selectKey 子元素设置它的值,默认值:未设置(unset)。如果生成列不止一个,可以用逗号分隔多个属性名称。
keyColumn (仅适用于 insert 和 update)设置生成键值在表中的列名,在某些数据库(像 PostgreSQL)中,当主键列不是表中的第一列的时候,是必须设置的。如果生成列不止一个,可以用逗号分隔多个属性名称。

多表映射

关于多表查询我们需要做:(基本上都是这样一个流程)

1、定义sql语句

2、指定查询返回结果

3、自己定义结果集映射(自定义返回的实体类)

高级扩展

  • Mapper批量映射优化:将字段的别名设置成和实体类属性一致,就可以免去在全局配置文件中注册这个步骤
  • PageHelper插件
  • 逆向工程和MybatisX插件

你可能感兴趣的:(mybatis,java,开发语言)