【介绍】MyBatis 自学笔记
1.MyBatis
1.1 简介
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
MyBatis 本是apache的一个开源项目iBatis框架,后来经过一些改进并改名为MyBatis。它主要对jdbc操作数据库的过程进行封装。
JDBC的封装框架主要有;
Hibernate dbutils jdbcTemplate[spring] mybatis
原理介绍:
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
1.2 MyBatis的框架核心
1、mybatis配置文件,包括Mybatis全局配置文件和Mybatis映射文件,其中全局配置文件配置了数据源、事务等信息;映射文件配置了SQL执行相关的信息。
2、 mybatis通过读取配置文件信息(全局配置文件和映射文件),构造出SqlSessionFactory,即会话工厂。
3、 通过SqlSessionFactory,可以创建SqlSession即会话。Mybatis是通过SqlSession来操作数据库的。
4、SqlSession本身不能直接操作数据库,它是通过底层的Executor执行器接口来操作数据库的。Executor接口有两个实现类,一个是普通执行器,一个是缓存执行器(默认)。
5、Executor执行器要处理的SQL信息是封装到一个底层对象MappedStatement中。该对象包括:SQL语句、输入参数映射信息、输出结果集映射信息。其中输入参数和输出结果的映射类型包括HashMap集合对象、POJO对象类型。
2 入门
2.1 简单操作流程如下:
.png)
除此之外,还有个更多模糊查询用户信息、插入用户信息、删除用户、更新用户、MySQL自增主键、MySQL自增UUID等。
需要注意的属性有:
- selectOne和selectList
selectOne:只能查询0或1条记录,大于1条记录的话,会报错:
selectList:可以查询0或N条记录
- #{}和${}
- parameterType和resultType
后两个详见:parameterType属性传参类型介绍
2.2 MyBatis的Dao编写
传统方式
mapper代理方式实现
开发规范:
1. mapper接口的全限定名要和mapper映射文件的namespace的值相同。
2. mapper接口的方法名称要和mapper映射文件中的statement的id相同;
3. mapper接口的方法参数只能有一个,且类型要和mapper映射文件中statement的parameterType的值保持一致。
4. mapper接口的返回值类型要和mapper映射文件中statement的resultType值或resultMap中的type值保持一致;
2.3 一些其他的配置
1. properties数据库文件配置
2. setting
3. 别名typeAliases(三种方式)
- mappers
<mapper resource=''/>
<mapper url=''/> 【一般不用】
<mapper class=''/>
<package name=''/>(推荐使用)
2.4 动态SQL
if和where标签
SQL片断
foreach标签
3 mybatis与hibernate的区别【面试题】
请参考这篇文章…….
参考:
JAVAEE——Mybatis(Mybatis介绍配置使用以及与Spring整合)
以及自学视频的笔记