Mybatis

Mybatis是一个可以自定义SQL,存储过程和高级映射的持久层框架。

Mybatis只使用简单的XML和注解来配置和映射基本数据类型、Map接口和POJO到数据库记录

一个MyBatis是以一个SqlSessionFactory实例为中心。一个SqlSessionFactory实例可以使用SqlSessionFactoryBuilder来创造。

从 配置类中创造SqlSessionFactory实例,可以使用xml配置文件来生成一个SqlSessionFactory实例

Resources:从类路径和其他地址中加载资源

XML文件包含了许多MyBatis的核心设置,包括一个获取数据库连接(Connection)实例的数据源(DataSource),和一个决定事务作用域和操作的TrancaxtionManager。

mappers项中包含了一系列SQL语句映射定义的xml文件。

映射类是包含了SQL映射注解的Java类,可以用来取代XML。

Mybatis会自动查找和加载已经存在的xml。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--1、mybatis可以使用properties来引入外部properties配置文件
resource:引入类路径下的资源
url:引入网络路径或磁盘下的资源
-->

<properties resource="dbconfig.properties"></properties>
<!--2、settings包含很多重要的设置项
setting:用来设置每一个设置项
name:设置项名
value:设置项取值 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 3、typeAliases:别名处理器,可以为java类型起别名 -->
<typeAliases>
<!--typeAlias:为某个java类型起别名
type:指定要起别名的类型全类名,默认别名就是类名小写,employee
alias:指定新的别名 -->
<!-- <typeAlias type="com.atguigu.mybatis.bean.Employee" alias="emp"></typeAlias>-->
<!-- 批量起别名
package:为某个包下的所有类批量起别名
name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个别名)
别名不区分大小写
-->
<package name="com.atguigu.mybatis.bean"/>
<!-- 批量起别名的情况下,如果别名重复,使用@Alias注解为某个类型指定新的别名-->
</typeAliases>

<!-- 4、environments:环境们,mybatis可以配置多种环境
environment:配置一个具体的环境信息,必须有两个标签,id代表当前环境的唯一标识
transactionManager:事务管理器
type:事务管理器的类型 JDBC(JDBCTransactionFactory)|MANAGED(MANAGEDTransactionFactory)
自定义事务管理器:实现TransactionFactory接口,type指定为全类名
datasource:type数据源:UNPOOLED( UNPOOLEDDataSourceFactory)
POOLED(POOLEDDataSourceFactory)默认使用
JNDI( JndiDataSourceFactory)
myabtis自带的数据源
自定义数据源:实现DataSourceFactory,type为全类名
-->


<!--<environments default="test">
<environment id="test">
<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>
-->
<environments default="mysql">
<environment id="mysql">
<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>


<!-- 5、databaseIdProvier:支持多数据厂商的
type="DB_VENDOR":vendorDatabaseIdProvider
作用就是的得到数据库厂商的标识(驱动getDatabaseProviderName()),mybatis就能根据数据库厂商的标识来执行不同的sql
-->

<!-- 将写好的Sql 文件配置到mybatis的全局映射文件中-->
<!-- 6、mapper:将sql映射注册到全局配置中
resource:引用类路径下的sql映射文件
url:引用网路路径下或磁盘路径下的资源file:///var/mapper/AuthorMapper.xml
class:引用注册接口
1、有sql映射文件,映射文件名必须和接口同名,并且放在同一目录下
2、没有sql映射文件,所有的sql利用注解写在接口
比较重要的,复杂的DAO接口写sql映射文件
不重要,简单的DAO接口为了开发快速可以使用注解
-->
<mappers>
<mapper resource="mybatis/mapper/EmployeeMapper.xml"/>
<mapper class="com.atguigu.mybatis.dao.EmployeeMapperAnnotation"></mapper>
</mappers>
</configuration>

创建SqlSessionFactory实例

public SqlSessionFactory getSqlSessionFactory() throws IOException {
//获取xml文件
String resource = "mybatis-config.xml";
//创建数据流
InputStream inputStream = Resources.getResourceAsStream(resource);
//生成sqlSessionFactory实例
return new SqlSessionFactoryBuilder().build(inputStream);

}

使用SqlSessionFactory实例

SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();

Mybatis步骤:1、mybatis核心配置文件配置

                          2、POJO模型创建

                          3、映射文件配置

                          4、获取SqlSessionFactory

                          5、获取SqlSession

                          6、CRUD操作

                          7、事务操作

                          8、关闭sqlSession

1、接口式编程                原生:DAO====》DaoImpl

                                           mybatis:mappen====》xxmapper.xml

2、sqlSession代表和数据库的一次会话,用完必须关闭(每次使用都应该取获取新的对象)

3、sqlSession和connection一样都是非线程安全

4、mapper接口没有实现类,但是 mybatis会为这个接口生成一个代理对象

5、两个重要的配置文件: 1、mybatis的全局配置文件:包含数据库连接池信息,事务管理

                                                2、sql映射文件:保存每一个sql语句的映射信息(将sql抽取出来生成一个单独的文件)

原文地址:https://www.cnblogs.com/cye9971-/p/10836736.html