MyBatis框架 SqlSessionFactory工厂 SqlSessionFactoryBuider构造器
SqlSession使用 Configuration配置 Mapper映射 Environment环境
Property性质 Datasource数据源 typeAliases类型命名
框架是一个提供了可重用的公共结构的半成品
Struts框架 Hibernate框架 Spring框架 SpringMVC框架 MyBatis框架
数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中数据模型的统称
MyBatis(可以代替JDBC)是一个开源的数据持久层框架,内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询,存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。
与JDBC相比,减少了50%以上的代码量
最简单的持久化框架,小巧并简单易学
SQL代码从程序代码中彻底分离,可重用
提供XML标签,支持编写动态SQL
提供映射标签,支持对象与数据库的ORM字段映射
SQL语句编写工作量大,对开发人员有一定要求
数据库移植性差
MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案,对性能的要求很高,或者需求变化较多的项目,如互联网项目,那么MyBatis将是不错的选择。
ORM(Object/Relational Mapping)即对象/关系映射,是一种数据持久化技术,它在对象模型和关系数据模型数据库之间建立起对应关系,通过javaBean对象去操作数据库 表中的数据
Eclipse—file—new—project—搜索maven—mavenProject—勾选Create a simple project—next—GroupId:填写/Artifact Id:填写、packaging:web/jar —再看项目列表中创建的项目带有webapp即创建成功
创建maven工程—pom.xml—src/main/resources—创建database.properties/myvatis-—config.xml—在mybatis-config.xml配置数据库连接—配置database.propertise
详细看:https://jingyan.baidu.com/article/870c6fc30543f1b03fe4bef1.html
https://jingyan.baidu.com/article/19020a0a140c71529d28422e.html
SqlSessionFactoryBuilder
丨build()
SqlSessionFactory
丨openSession()
SqlSession
用过即丢,其生命周期只存在于方法体内
可重用其来创建多个 SqlSessionFactory 实例
负责构建SqlSessionFactory,并提供多个build方法的重载
配置信息可以以三种形式提供给SqlSessionFactoryBuilder的build方法
InputStream(字节流) Reader(字符流) Configuration(类)
简单的理解就是创建sqlSession实例的工厂。所有MYBatis应用都是以SqlSessionFactory实例为中心,SqlSessionFactory的实例可以通过SqlSessionFactoryBuilder对象来获得。
SqlSession对象
提供了面向数据库执行SQL命令所需要的所有方法
SqlSession对应着一次数据库会话,由于数据库绘画不是永久的,因此SqlSession生命周期也不是永久的.相反,每次访问数据库时都需要创建他(并不是说在SqlSession里只执行一次sql,是完全可以执行多次的,若是关闭了SqlSession,就需要重新创建它)创建SqlSession的地方只有一个,那就是有自己的SqlSession实例,SqlSession实例不能被共享,也不是线程安全的,因此最佳的作用域范围是request作用域或者方法体作用域内,关闭SqlSession是非常重要的,必须确保SqlSession在finally语句中正常关闭.
configuration 配置
properties 可以配置在Java 属性配置文件中
settings 修改 MyBatis 在运行时的行为方式
typeAliases 为 Java 类型命名一个别名(简称)
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境
environment 环境变量
transactionManager 事务管理器
dataSource 数据源
mappers 映射器
1、通过外部指定的方式(database.properties),实现动态配置
2、直接配置为xml,实现动态配置
外部指定高于直接配置