zoukankan      html  css  js  c++  java
  • 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抽取出来生成一个单独的文件)

  • 相关阅读:
    数据结构(四十七)归并排序(O(nlogn))
    数据结构(四十六)插入排序(1.直接插入排序(O(n²)) 2.希尔排序(O(n3/2)))
    数据结构(四十五)选择排序(1.直接选择排序(O(n²))2.堆排序(O(nlogn)))
    数据结构(四十四)交换排序(1.冒泡排序(O(n²))2.快速排序(O(nlogn))))
    数据结构(四十三)排序的基本概念与分类
    策略模式(strategy pattern)
    多线程同步之读者写者问题
    多线程同步之信号量
    多线程同步之条件变量
    多线程同步之互斥量
  • 原文地址:https://www.cnblogs.com/cye9971-/p/10836736.html
Copyright © 2011-2022 走看看