Mybatis章节二核心组件

Update Time:2019-3-6 Author:要你命三千又三千 type:学习笔记

Mybatis核心组件

四部分组成

  1. sqlSessionFactoryBuilder(构造器)
    根据代码来生成SqlSessionFactory(builder模式的应用)
  2. SqlSessionFactory(工厂接口)
    生成SqlSession
    3.SqlSession会话
    一个既可以发送SQL执行返回结果,又可以获取Mapper接口。
    在使用情形中:一般使用SQL Mapper接口技术,提高代码的可读性和可维护行。
  3. SQL Mapper(映射器)
    组成 java接口和xml 文件(注解)构成。需要给出对应的SQL和映射规则,负责发送SQL并且执行返回结果。
    在这里插入图片描述

详解

sqlSessioonFactory(工厂接口)

第一步:mybatis使用配置或者代码生成SqlSessionFactory.
mybatis提拱SqlSessionFactoryBuilder来生成。

一是可以通过XML配置文件的方式来构建SqlSessionFactory,
二是可以通过Java API的方式来构建。但不管通过什么方式都有一个Configuration贯穿始终,各种配置正是通过Configuration对象来完成实现

推荐使用xml 文件的形式来生成SqlSessionFactory.
原因:易于修改。
在这里插入图片描述
mybatis形成了以SqlSessionFactory为中心。
补充点:SqlSessionFactory作用是,生成SqlSession对象。

使用xml 构建SqlSessionFactory

Mybatis的配置文件分为两类

  • 基础配置文件
    作用:配置映射关系、SQL、参数等信息
    常用名:mybatis-config.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">
<!--通过这个配置文件,完成mybatis与数据库的连接  -->
<configuration>
    <!-- 注意此配置文件内的元素的  -->
    <!-- 引入database.properties文件 -->
    <properties resource="database.properties"/> 
    <!--配置mybatis的log实现为LOG4J  -->
    <!-- 配置后,后台就会有sql语句的输出 -->
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>
    <!-- 设置类的别名 -->
    <typeAliases>
        <!-- <typeAlias alias="User" type="com.wu.pojo.User"/> -->
        <!-- 根据包取别名,把包下面的所有类都按类名来取别名,类的全名会转化为类的别名。 -->
        <!-- 这用可以简化代码量 -->
        <package name="com.wu.pojo"/><!--为当前包以及下面所有的后代包的每一个类都起一个默认别名-->
    </typeAliases>
    <!--数据库环境-->
    <environments default="development">
        <environment id="development">
            <!-- 配置事务管理 ,采用mybatis的JDBC管理事务-->
            <transactionManager type="JDBC"/>
            <!-- POOLED是mybatis的数据源 -->
            <!-- JNDI是基于tomcat的数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- pojo的映射文件UserMapper引入到配入到配置文件中 -->
    <mappers>
        <!-- resource要写成路径 --><!--映射器-->
        <mapper resource="com/wu/dao/UserMapper.xml"/>
        <mapper resource="com/wu/dao/RoleMapper.xml"/>
        <package name=""/>
    </mappers>
</configuration>

SqlSession

SqlSession是核心接口。
有来个实现类DefaultSqlSession和SqlSessionManageer.
作用:

  • 获取Mapper接口
  • 发送SQL给数据库
  • 控制数据库事务

创建方式

SqlSession sqlsession=SqlSessionFactory.openSession();

事务控制

SqlSession sqlsessin=null;
try{
   //打开SqlSession会话
   sqlSession=SqlSesssionFactory.openSession();
   //someCode
sqlSession.commit();
}catch(Exception ex){
 sqlSession.rollback();
}finally{
   if(sqlSession!=null)
   sqlSession.close();
}

映射器的使用

组成

  • 接口
  • xml文件(注解)

xml配置文件的功能

  • 描述映射规则
  • 提供Sql语句,并且配置Sql参数类型,返回类型。缓存刷新
  • 配置缓存
  • 提供动态SQL
    映射器的主要作用就是将:SQL查询到的结果映射为一个POJO,或者反向POJO插入到数据库中。并且定义了一些关于缓存等内容。

实现映射器

步骤一:定义接口

package com.learn.ssm.chapter.mapper;
public interface RoleMapper{
 public Role getRole(Long id);
}

步骤二:在创建SqlSession的配置文件中添加如下代码

<!--作用:引入一个XML文件,用XML方式创建映射器-->
<mapper resource="com/learn/ssm//chapter3/mapper/RoleMapper.xml"/>

步骤三:创建xml文件

<? version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
      PUBLIC "-//mybaits.org//DTD Mapper 3.0 //EN"
       "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        <!--namespace是接口的全名-->
       <mapper namespace="com.learn.ssm.chapter3.mapper.RoleMapper">
       <!--select查询语句 id 标识SQL,long传递long参数,返回一个role类型值-->
       <select id="getRole" parameterType="long"  resultType="role">
       select  id, role_name as roleName , note form t_role where id=#{id}
     </select>
     <mapper>

类别名resultType的role的由来,是下列类的别名。
在这里插入图片描述

使用注解实现映射器(不推荐)

import com.learn.ssm.chapter3.pojo.Role;
public interface RoleMapper2{
    @Select("slect id ,role_name as roleName,note from t_role where   id=#{ id}")
    public Role getRole(Long id);
 }

说明:完全等同于XML方式创建映射器。
但是推荐使用xml创建Mapper为主。大部分企业都是以xml为主。

SqlSession发送sql

在有了映射器就就可以通过sqlSession 发送sql

Role role=(Role)sqlSession.selectOne("com.learn.ssm.chatper3.mapper.RoleMapper.getRole",1L);

selectOne()方法:使用查询并且返回一个对象,参数是一个String,和Object(long参数)
string 对象是一个命令空间加上SQL id组合而成,定位了一个SQL;
也就是sqlMapper 中的id

 <select id="getRole" parameterType="long"  resultType="role">

使用mapper接口发送SQL

RoleMapper roleMapper=sqlSession.getMapper(RoleMapper.class);
Role role=roleMapper.getRole(1L);

先获取Mapper接口,然后调用方法。

猜你喜欢

转载自blog.csdn.net/qq_35495763/article/details/88254632
今日推荐