mybatis复习

一. MyBatis

 

1. MyBatis简介

·MyBatis前身是iBatis,本是Apache的一个开源的项目mysql

·ORM框架git

·实体类和SQL语句之间创建映射关系github

2. MyBatis特色

·基于SQL语法,简单易学sql

·能了解底层封装过程数据库

·SQL语句封装在配置文件中,便于统一管理与维护,下降程序的耦合度编程

·方便程序代码调试缓存

3. 搭建MyBatis开发环境

 

1.下载mybatis-3.2.2.jar包并导入工程session

2.编写MyBatis核心配置文件(configuration.xml)mybatis

3.建立实体类-POJOapp

4.DAO-SQL映射文件(mapper.xml)

5.建立测试类

读取核心配置文件mybatis-config.xml

建立SqlSessionFactory对象,读取配置文件

建立SqlSession对象

调用mapper文件进行数据操做

 

4. MyBatis框架优缺点

4.1优势

·JDBC相比,减小了50%以上的代码量

·最简单的持久化框架,小巧并简单易学

·SQL代码从程序代码中完全分离,可重用

·提供XML标签,支持编写动态SQL

·提供映射标签,支持对象与数据库的ORM字段映射

4.2缺点

·SQL语句编写工做量大,对开发人员有必定要求

·数据库移植性差

5. MyBatis基本要素

·MyBatis的核心对象

SqlSessionFactoryBuilder

SqlSessionFactory

SqlSession

·mybatis-config.xml  系统核心配置文件

·mapper.xml  SQL映射文件

 

6. 核心对象

6.1SqlSessionFactoryBuilder

·用过即丢,其生命周期只存在于方法体内

·可重用其来建立多个 SqlSessionFactory 实例

·负责构建SqlSessionFactory,并提供多个build方法的重载

·读取XML文件构造方式:

String resource = "mybatis-config.xml";   

InputStream is = Resources.getResourceAsStream(resource);   

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

 

6.2SqlSessionFactory

·SqlSessionFactory是每一个MyBatis应用的核心

·做用:建立SqlSession实例

     SqlSession session = sqlSessionFactory.openSession(boolean autoCommit);

·做用域:Application

·生命周期与应用的生命周期相同

·单例

存在于整个应用运行时,而且同时只存在一个对象实例

6.3SqlSession

·包含了执行SQL所需的全部方法

·对应一次数据库会话,会话结束必须关闭

·线程级别,不能共享

 

SqlSession session = sqlSessionFactory.openSession();

try {

      // do work

} finally {

     session.close();

}

注意  SqlSession里能够执行屡次SQL语句,但一旦关闭了SqlSession就须要从新建立

 

 

 

6.4SqlSession的获取方式

 

String resource = "mybatis-config.xml";   

InputStream  is = Resources.getResourceAsStream(resource);   

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is) ;

SqlSession sqlSession = factory.openSession();

6.5SqlSession的两种使用方式

·经过SqlSession实例直接运行映射的SQL语句

·基于Mapper接口方式操做数据

 

7.系统核心配置文件

7.1  mybatis-config.xml 系统核心配置文件

·configuration 配置

·properties    能够配置在Java 属性配置文件中

·settings    修改 MyBatis 在运行时的行为方式

·typeAliases   Java 类型命名一个别名(简称)

·typeHandlers   类型处理器

·objectFactory   对象工厂

·plugins   插件

·environments   环境

·environment   环境变量

·transactionManager  事务管理器

·dataSource   数据源

·mappers    映射器

注意元素节点的顺序!

 

<?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">
<!--根节点,XMl只能有一个-->
<configuration>
    <settings>
        <!--二级缓存-->
        <setting name="cacheEnabled" value="true"/>

    </settings>
    <!--一个environments有N个environment-->
    <typeAliases>
        <package name="cn.bdqn.entity"></package>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <!--
           transactionManager:JDBC保证事务的
           update
           delete
           事务分类:JDBC:编程式事务
                       xxx.beginTransaction()
                       tx.commit()
                       tx.rollback()
                     配置式事务
                     JDBC|MANAGED
                     区别
           -->
            <transactionManager type="JDBC"></transactionManager>
            <!--
               POOLED:MyBatis内置的链接池
               c3p0链接池
                       POOLED 、UNPOOLED  、JNDI
           -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///blog"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    </environments>
        <mappers>
           <!-- <package name="cn.bdqn.dao"></package>-->
            <mapper resource="cn/bdqn/dao/DeptMappr.xml"></mapper>
            <mapper resource="cn/bdqn/dao/Ibndao.xml"></mapper>
            <mapper resource="cn/bdqn/dao/IEmpDAO.xml"></mapper>
            <mapper resource="cn/bdqn/dao/ICategoryDAO.xml"></mapper>
            <mapper resource="cn/bdqn/dao/ITeacher.xml"></mapper>
        </mappers>
        </configuration>

 

7.2  小配置

<?xml version="1.0" encoding="UTF-8"?>
<!--头文件-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace:
     命名空间:区分不一样空间下的同名SQLID
     A: findlAll
     B:  findAll
    -->

<mapper namespace="cn.bdqn.dao.IDeptDao">
    <cache/>
    <!--SQL标签
      id:惟一锁定到SQL标识
      paramenterType:SQL语句的入参  能够省略
      resultType:
      增删除操做:不能
      查询:单个实体的类型
    -->
<sql id="aa">
    blogId,blogAuthor,blogAddress,blogDel
</sql>
    <resultMap id="DeptMap" type="Dept">
        <!--<result column="BlogAuthorr" property="blogAuthor"/>-->
    </resultMap>
    <!--查询全部-->
    <select id="getAll"  resultMap="DeptMap">
  /*SQL文:SQL语句*/
        SELECT <include refid="aa"></include>FROM  bloginfo
    </select>

</mapper>

 

8.总结

 

 

9.git完整事例代码一份

https://github.com/qjtlovezch/Y2165/tree/master/_02MyBatis

相关文章
相关标签/搜索