一、JDBC开发步骤
1、Driver接口实现类的实例对象加载到DriverManager
2、通过DriverManager驱动Driver对象建立通信通道
3、由通信通道负责创建对象负责推送SQL语句并带回
4、由preparedstatement对象负责推送SQL语句并带回数据库服务器返回的处理结果
5、销毁资源
二、JDBC的缺点
1、jdbc开发步骤过去繁琐
2、需要开发人员手动为每一个占位符指定具体值
3、需要开发人员手动实现resultset与实体类对象之间转换
三、什么是框架:
1、存在于jar包中的一组工具类
2、在工具类之间设置了固定调用顺序
四、MyBatis框架:
1、MyBatis框架在内部封装JDBC调用流程
2、MyBatis框架使得开发人员在进行数据库访问操作时,只需要关注与推送SQL语句而无需关注JDBC流程
五、MyBatis框架开发环境搭建
1、引入jar包
1)mysql对于JDBC规范中接口提供的实现类jar包
2)MyBatis.jar
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.9</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies>
2、src/main/resources设置配置文件
1)SQL映射文件
SQL映射文件是xml文件
一个SQL映射文件存储一张表中SQL语句
SQL映射文件内部结构
<maper namespace = "命名空间"> <insert id = "insert"></insert> <delete id = "del"></delete> <update id = "updae"></update> </maper>
2)mybatis核心文件
mybatis核心文件是xml文件
mybatis核心文件指定要访问的数据库服务器基本信息(URL,user,password)
为mybatis框架指定项目中SQL映射文件位置
<environment id="one"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test1"/> <property name="username" value="root"/> <property name="password" value="123"/> </dataSource> </environment>
六、SqlSession接口
1、SqlSession来自于mybatis框架
2、mybatis框架提供SqlSession接口实现类DefaultSqlSession
3、SqlSession接口定义用于推送SQL语句方法
七、如何获得SqlSession对象:
1、创建一个读取流只想mybatis核心配置文件
2、通过SqlSessionFactoryBuilder对象读取配置文件信息交给SqlSessionFactory对象
3、由SqlSessionFactory对象提供SqlSession
4、通知SqlSession对象推送指定的SQL语句
5、销毁SqlSession对象
public void test1() throws IOException { //1、 InputStream in = Resources.getResourceAsStream("mybatis.xml"); //2、 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); //3、 SqlSession sqlSession = factory.openSession(true); //4、 int result = sqlSession.insert("dept.insert"); //5\ sqlSession.close(); in.close(); //6\输出结果 System.out.println("本次插入了"+result+"行数据"); }
八、SqlSessionFactoryBuilder作用
1、buid(InputStream):将指向mybatis核心配置文件的读取
流,交给内部build(InputStream ,String,Properties)
2、build(InputStream,String ,Properites)
1)创建了一个用于解析mybatis核心配置文件的xml解析对象
XMLConfigBuilder parser = newXMLConfigBuilder(inputStream, environment, properties);
2)通过xml解析对象将myBatis核心配置文件中标签中内容
读取出来保存到一个Configuration
Configuration configuration = parser.parse();
3)创建DefaultSqlSessionFactory 并将configuration对象存
入其中
return new DefaultSqlSessionFactory(configuration)
九、SqlSessionFactory介绍:
1、SqlSessionFactory来自于MyBatis框架中一个接口
2、实际使用过程中,使用这个接口的实现类DefaultSqlSessionFactory
3、具体作用:
1)根据mybatis核心配置文件中environment标签设置事务管理方式【事务提交方式,事务隔离级别】
2)指定mybatis框架用于推送SQL语句执行器的类型
3)将【事务管理方式】和【SQL语句执行器类型】作为属性封装到DefaultSession对象
十、SqlSession介绍
1、SqlSession来自于mybatis框架提供一个接口
2、实际使用中,使用这个接口中DefaultSqlSession实现类
3、SqlSession是开发人员与mybatis进行沟通的一个通道
借助于SqlSession对象通知mybatis框架将指定的SQL语句进行推送
4、具体分析
1)SqlSession对象接受到请求之后,通过Configuration对象得需
要推送的SQL语句
2)SqlSession对象通过SQL语句执行器得到statement对象
3)通过Statement对象将sql语句推送到数据库服务器执行并带回处理结果
十一、SqlSession对于事务管理方式
1、SqlSession不仅仅负责推送SQL语句,同事负责事务管理
2、事务管理方式:
1)SqlSession.sqlSession = factory.openSession(false)
false 传递给Connection对象,Connection对象将autoCommit属性设置为false
con.setAutoCommit(false)
此时sqlSession 推送的SQL语句关联的事务对象管理权由SqlSession 管理,在SQL语句推送完毕后,必须由sqlSession决定事务提交与回滚
sqlSession.commit();
sqlSession.rollback();
SqlSession.sqlSession = factory.openSession(true)