01-概念
一,数据持久化
1,持久化:数据在瞬时状态(比如内存,缓存)和持久状态(比如:硬盘,数据库)相互转换的过程
2,我们之前血管的持久化技术:IO 序列化,数据库(增删改查).....
二,ORM
1,ORM:object relational mapping对象-关系-映射是数据持久化的一种;
2,我们在编写程序时,是以面向对象的方式处理数据,在保存数据中却以非关系型数据库的形式存储,即:在java对象和非关系数据库之间建立的一种对立关系。
三,Mybatis
1,其前身是ibatis,原来是 Apache,2010年迁移到了Google,并且改名Mybatis,2013年迁移到GitBub。
2,是一种基于ORM技术的持久化框架之一(另一个是Hibernate),在java对象和数据库的表直接建立一种映射关系
3,通过mybatis可以建立sql关系映射,是对JDBC代码的简化和替换
4,当前版本是3.5.9 发布于2021年12月,我们目前的版本是3.4.0
开发步骤
一,使用Mybatis开发的步骤:
1,在pom.xml中添加项目需要依赖:mybatis,JDBC,log4j,junit
2,创建mybatis的核心配置文件:mybateis-config.xml;
3,创建pojo实体类
4,创建SQL映射文件XXXMapper.xml; XXX:业务模块(用户,订单,商品)
5,创建测试类
Mybatis核心对象
一,核心要素:
1,核心配置文件:mybatis-config.xml;
2,SQL映射文件:XXXMapper.xml;进行一个SQL语句的映射
3,核心对象:SQLSessionFactorBuilder,SQLSessionFactor,SQLSession
二,核心对象:
1,sqlSessionFactoryBuilder
通过buiid(InputStream||Reader||Configuration)方式创建多个SqlSessionFactory;
最大特点是:用过即丢:一旦创建了session工厂后,此类就不需要存在了,因此它的最佳作用域是方法内部,即局部变量;
2,SqlSessionFactory
通过openSession(boolean)创建多个sqlSession;参数boolean=true时,代表关闭事务管理(自动提交,默认);=false时,代表开启事务管理(自动提交,默认);=false时,代表开启事务管理;
SqlSessionFactory是每个Mybatis程序的核心。一旦创建,就会在整个程序的运行过程始终存在,并且也不建议多次创建。因此,它的作用域是Application,即随着程序的生命周期一同存在。
这种在整个过程运行期间,有且仅有 一个实例“的模式,即为单例模式;
3,SqlSession
用于执行持久化操作,类似与JDBC技术中的Connection对象。它提供了执行SQL语句的所有方法;通过它可以获取到Mapper接口的实例,进而执行接口中的方法;通过它可以获取到Mapper接口的实例,进而执行接口中的方法;
sqlSession对应这程序与数据库的一次会话,每次访问数据时时都要创建它,且会话必须关闭
每个线程都有自己的sqlsession实例,不能被共享,也是线程不安全的;
关于增删改 注意点:
1,该类型的操作默认返回的是受影响的行数,所有Dao接口中的方法一般返回int;
2,,,标签没有resultType属性;
3,这三类操作都会更新数据,所以我们需要加入事务管理机制,具体步骤
(1)在try块中执行完相应的方法后,需要通过SqlSession.commit()提交操作;
(2)还需要在catch块中加入SqlSession.rollback()进行回滚操作;并将受影响的行数归零;