简介
- MyBatis SQL Mapper Framework for Java,言简意赅,MyBatis是一个位于持久化层,实现SQL映射的框架,类似的框架还有JDBC,Hibernate等。
- 其本质就是对JDBC的封装,通过MyBatis对数据库实现CRUD(增删改查)。
ORM
- MyBatis与ORM
开发流程
-
resources目录
- 放在这个目录下的文件一般都是资源或配置文件。
- 需要注意的是,放在resources目录下的资源等同于放到了根目录。
-
开发步骤
- 第一步:打包方式设置为jar
- 第二步:引入依赖
- mybatis依赖
- mysql驱动依赖
- 第三步:编写mybatis核心配置文件:mybatis-config.xml
注意:- 第一:这个文件不是必须叫mybatis-config.xml,可以叫其他名字,只是大家都默认用这个名字
- 第二:这个文件的存放位置也不是固定的,可以随意,但是一般情况下都存放在resources
- 第四步:编写Xxxxmapper.xml文件
- 这个配置文件中编写SQL语句。
- 和mybatis-config.xml一样,名字和路径都不是固定的,但是一般都放在resources
- 第五步:在mybatis-config.xml中指定Xxxxmapper.xml的路径:
- < mapper resource=“carMapper.xml”/>
- 注意:resource属性会从类的根目录下查找资源。
- 第六步:编写MyBatis程序。(使用mybatis的类库,编写mybatis程序,连接数据库,进行增删改查。)
- 在MyBatis中,负责执行SQL语句的对象叫做SqlSession,是一个Java程序和数据库之间的一次会话。
- 三个核心对象的依赖如下:
- SqlSessionFactoryBuilder --> SqlSessionFactory --> SqlSession
- 注意:一般情况下一个数据库对应一个SqlSessionFactory对象。
-
从XML中构建SqlSessionFactory
- 第一:在mybatis中有一个SqlSessionFactory对象
- 第二:SqlSessionFactory对象的创建需要XML
- 第三:XML是配置文件
-
mybatis中有两个主要的配置文件:
- 第一个是:mybatis-config.xml,这个是核心配置文件,主要配置连接数据库的信息等。(一个)
- 第二个是:XxxxMapper.xml,这个文件是专门用来编写SQL语句的配置文件。(一个表一个)
- 例如:
t_user表对应的就是UserMapper.xml
t_student表对应的就是StudentMapper.xml
- 例如:
-
一些小细节
- mybatis中sql语句结尾的’;'可以不加
- Resources.getResourceAsStream
- 小技巧:名中含有resource的大部分方法,其加载资源的路径都从类的根目录下开始加载。
- InputStream is = new FileInputStream(d:\mybatis-config.xml)
- 也可以,但是可移植性太差,程序不够健壮。
- 由上面两条其实已经验证了,config文件的名称和路径不固定,使用默认的方式存放文件是为了提升程序的健壮性,使其在移植到其他平台后依旧可以正常运行。
-
关于myBatis的事务管理机制
- 在mybatis-config.xml中,可以使用以下标签进行事务管理机制的配置:
- type的属性值有两个可用选项:
- JDBC
- MANAGED
- JDBC事务管理器:
- mybatis框架自己管理事务(DAO层接管事务管理工作),自己采用原生的JDBC代码进行事务管理。
- conn.setAutoCommit(false); 开启事务
- …业务处理…
- conn.commit();手动提交事务
- 需要注意的是:
- 在sqlSessionFactory.openSession()时,底层的代码执行了conn.setAutoCommit(false);
在sqlSession.commit()时,底层代码执行了conn.commit();
- 在sqlSessionFactory.openSession()时,底层的代码执行了conn.setAutoCommit(false);
- mybatis框架自己管理事务(DAO层接管事务管理工作),自己采用原生的JDBC代码进行事务管理。
- MANAGED事务管理器:
- mybatis不再管理事务(业务逻辑层接管事务管理工作),将事务管理交给其他容器负责。例如:spring。
- JDBC中,默认情况下AutoCommit的值为TRUE。
- 在mybatis-config.xml中,可以使用以下标签进行事务管理机制的配置: