学习视频:尚硅谷MyBatis教学视频
MyBatis持久化层,和数据库交互的框架。
JDBC->Dbutils(QueryRunner)->jdbcTemplate:工具
框架:整体解决方案
JDBC:编写sql–>预编译–>设置参数–>执行sql–>封装结果
使用工具的话:
1.功能简单;sql语句编写在java代码里面;硬编码高耦合的方式
Hibernate:全自动全映射ORM(Object Relation Mapping)框架;旨在消除sql
javaBean–>编写sql–>预编译–>设置参数–>执行sql–>封装结果–>DbRecor
希望:sql语句交给开发人员编写,希望sql不失去灵活性
MyBatis( 半自动,轻量级的框架):sql与java编码分离;sql是开发人员控制
只需要掌握好sql语句
HelloWorld
/*
1.根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象
有数据源一些运行环境的信息
2.sql映射文件,配置了每一个sql,以及sql的封装规则
3.将sql映射文件注册在全局配置文件中
4.写代码:
1)根据全局配置文件得到sqlSessionFactory
2)使用sqlSessionFactory获取到sqlSession对象使用他来执行增删改查
一个sqlSession就是代表和数据库的一次会话,用完关闭
3)使用sql唯一标识来告诉Mybtis执行哪个sql,sql都是保存在sql映射文件中的
*/
/*
1.接口式编程
原生: Dao ===>DaoImpl
Mybatis:Mapper ===>xxMapper.xml
2.SqlSession代表和数据库的一次会话,用完必须关闭
3.SqlSession和connection一样都是非线程安全。每次使用都应该去获取新的对象
4.mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象
(将接口和xml进行绑定)
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
5.两个重要的配置文件:
mybatis的全局配置文件;包含数据库连接池信息,事务管理器信息。。。系统运行环境信息
sql映射文件:保存了每一个sql语句的映射信息。
将sql抽取出来
*/
全局配置文件
properties属性
<!--
1.mybatis可以使用properties来引入外部properties配置文件的内容;
resource:引入类路径下的资源
url:引入网络路径或者磁盘路径下的资源
<properties resource="dbconfig.properties"></properties>
-->
settings设置
<!--
2.settings包含很多重要的设置项
setting:用来设置每一个设置项
name:设置项名
value:设置项取值
-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
typeAliases别名处理器
<!--3.typeAliases别名处理器,可以为我们的java类型起别名,别名不区别大小写-->
<typeAliases>
<!--typeAliases:为某一java类型起别名
type:指定要起别名的类型全类名;默认别名就是类名小写;employee
alias:指定新的别名
-->
<typeAlias type="com.atguigu.mybatis.bean.Employee" alias="emp"/>
<!--package:为某个包下的所有类批量起别名-
name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名(类名小写))
-->
<package name="com.atguigu.mybatis.bean"/>
<!--批量起别名的情况下,使用@Alias注解为某个类型指定新的别名-->
</typeAliases>
environment
4.environments:环境们,mybatis可以配置多种环境,default指定使用某种环境,可以达到快速切换
environment:配置一个具体的环境信息,必须有两个标签,id代表当前环境的唯一标识
transactionManager:事务管理器
type:事务管理器的类型;JDBC(Jdbc TransactionFactory) MANAGED
自定义事务管理器,实现TransactionFactory接口,type指定为全类名
dataSource:数据源;
type:数据源类型;UNPOOLED|POOLED|JNDI
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="jdbc.url"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
databaseIdProvider
5.dababaseIdProvider:支持多数据库厂商的;
type=“DB_VENDOR”,VendorDatabaseIDprovider
作用是得到数据库厂商的标识(驱动),mybatis就能根据数据库厂商标识执行不同的sql;
MySQL ;Orace ;SQL Server;
mappers
6.mappers:将sql映射注册到全局配置中
mapper:注册一个sql映射
resource:引用类路径下的sql映射文件
mybatis/mapper/EmployeeMapper.xml
url:引用网络路径或者磁盘路径下的sql映射文件
file:///var/mappers/AuthorMapper.xml
class:引用(注册)接口
注册接口
class:引用(注册)接口
1.有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下
2.没有sql映射文件,所有的sql都是利用注解写在接口上的
推荐:比较重要的Dao接口我们来写sql映射文件
不重要,简单的Dao接口为了开发快速可以使用注解