小沈纪录篇:希望大神指导一二。小弟感激不尽!
由于好久没接触mybatis了,现在的项目刚好用也用到了mybatis,索性写了点比较简单的demo,本文简陋太(赶时间坐公交车,没法细说,见谅),初学者看看还行,大佬自行让路哈!

首先,我们先来看看百度百科是怎么定义的。
MyBatis[2]是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。
1、SqlMapConfig.xml是Mybatis的全局配置文件,类似于Hibernate中的hibernate.cfg.xml,主要用于配置数据源、事务、加载实体mapper.xml配置文件
2、SqlSessionFactory:会话工厂 是每一个MyBatis Application必有的,根据config配置文件创建,它主要用于创建Sqlsession会话,由sqlSessionBuilder通过new 的方式创建,SessionFatoryBuider可直接当作一个工具类使用,不需要使用单例进行管理,而由它创建的SqlSessionFactory是最好通过单例模式来创建,保证工厂一旦创建一次,就使用一个SqlSessionFactory实例。并且SqlSessionFactory的作用范围是应用程序级的,在一个application中可仅有一个SqlSessionFactory,所以用单例控制SqlSessionFactory的创建。
3、Sqlsession:会话工厂创建出Sqlsession会话后,回话方可执行DB操作,执行sql语句、事务控制等,执行后可commit提交到数据库;SqlSession的作用范围和生命周期需要开发人员特别注意,因为它不是线程安全的,除了操作方法之外,还有数据属性。所以它的作用范围最好界定到方法级别,定义为方法的局部变量,也就是一个方法独有一个SqlSession实例。
Exucutor:Mybatis在Sqlsession中提供了Exucutor类(执行器),是SqlSession用于执行sql操作数据库的接口类
Mapped Statement:另外Mapped Statement是底层封装对象,对操作数据库的参数进行封装,包括sql语句、输入参数、输出参数
Mybatis的执行流程大致是这样的

第一步,程序启动
第二步,加载配置文件Mapper.xml、Config.xml
第三,这个就牛逼了。SqlSessionFactory(构建sqlSession的工厂,用于生产session),工厂都是单例的,保证工厂一旦创建一次,就使用一个SqlSessionFactory实例
第四步,由SqlSessionFactory创建session,所有的操作将通过session完成;Statement是底层封装对象,对操作数据库的参数进行封装,包括sql语句、输入参数、输出参数
第五步,事务管理。成功则提交数据库,失败则回滚!
*创建demo第一步,创建config.xml(配置数据库连接) 项目中需要加两个包
******mybatis******* mysql-connector-java

*创建demo第二步,创建userMapper.xml(映射sql)注意每个语句id都是唯一的。

*创建demo第三步,java代码


网友评论