简介
MyBatis是一款持久层框架,是基于JDBC的开发。
基本使用
mybatis配置文件设计标签和顶层结构如下:
-
configuration(配置)
-
properties(属性)
-
settings(设置)
-
typeAliases(类型别名)
-
typeHandlers(类型处理器)
-
objectFactory(对象工厂)
-
plugins(插件)
-
environments(环境配置)
-
environment(环境变量)
-
transactionManager(事务管理器)
-
dataSource(数据源)
-
-
-
databaseIdProvider(数据库厂商标识)
-
mappers(映射器)
-
日志输出
在<settings>标签中设置日志
<settings>
<!-- SLF4J 选择slf4j输出! -->
<setting name="logImpl" value="SLF4J"/>
</settings>
#{} 和${}
- Mybatis会将SQL语句中的#{}转换为问号占位符。
- ${}底层Mybatis做的是字符串拼接操作。
数据输入
- 单个简单数据
- 实体类类型
- 零散的数据(可用@Param("empId")来表明)
- Map类型
数据输出
- 单个简单数据
- 实体类类型
- 零散的数据(可用@Param("empId")来表明)
- Map类型
- List类型
- 返回主键值
Mybatis是将自增主键的值设置到实体类对象中,而不是以Mapper接口方法返回值的形式返回。
- 自增长类型主键:keyProperty
- 非自增长类型主键:<selectKey>标签
- 实体类属性和数据库字段对应关系
- 别名对应:将字段的别名设置成和实体类属性一致
- 将字段的别名设置成和实体类属性
- 使用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插件