1. SqlSessionFactoryBuilder (构造器)
    • 会根据配置或者代码来生成SqlSessionFactory
  2. SqlSessionFactory (工厂接口)
    • 以后他来生成SqlSession
  3. SqlSession (会话)
    • 一个既可以发送SLQ执行返回结果,也可以获取Mapper的接口
  4. SQL Mapper (映射器)
    • 负责发送SQL 去执行,并返回结果。

使用MyBatis 肯定是要生成 SqlSessionFactory

  1.通过读取xml 配置文件用SqlSessionFactoryBuilder 生成

  2.通过代码用 SqlSessionFactoryBuilder 生成

SqlSessionFactory的作用?

  sqlSessionFactory 唯一的作用就是生产 MyBatis的核心接口对象SqlSession

  一般采用单例模式处理它

SqlSession的作用?

  SqlSession 的作用类似一个JDBC中的 Connection 对象代表着一个连接资源的启用。

  具体

  1. 获取Mapper 接口
  2. 发送 SQL语句 给数据库
  3. 控制数据库事务
    • commit()

  如何获得 SqlSession?

   SqlSession sqlSession = SqlSessionFactoty.opensession();

  

SQL Mapper (映射器)的作用?

  1. 描述映射规则。
  2. 提供SQL语句,并可以配置SQL参数类型,返回类型,缓存刷新等信息。
  3. 配置缓存
  4. 提供动态 SQL

如何实现映射器?

XML 方式创建映射器

1.映射器接口

public interface RoleMapper {
public int insertRole(Role role);
public int deleteRole(Long id);
public int updateRole(Role role);
public Role getRole(Long id);
public List<Role> findRoles(String roleName);
}

2.RoleMapper.xml

<?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">
<mapper namespace="com.learn.ssm.chapter3.mapper.RoleMapper"> <insert id="insertRole" parameterType="role">
insert into t_role(role_name, note) values(#{roleName}, #{note})
</insert> <delete id="deleteRole" parameterType="long">
delete from t_role where id= #{id}
</delete> <update id="updateRole" parameterType="role">
update t_role set role_name = #{roleName}, note = #{note} where id= #{id}
</update> <select id="getRole" parameterType="long" resultType="role">
select id,
role_name as roleName, note from t_role where id = #{id}
</select> <select id="findRoles" parameterType="string" resultType="role">
select id, role_name as roleName, note from t_role
where role_name like concat('%', #{roleName}, '%')
</select>
</mapper>

3.在 mybatis-config.xml 中引入XML配置文件

    <mappers>
<mapper resource="com/ssm/mapper/RoleMapper.xml"/>
</mappers>

注解实现映射器

1.映射器接口

public interface RoleMapper2 {

    @Select("select id, role_name as roleName, note from t_role where id=#{id}")
public Role getRole(Long id); }

2..在 mybatis-config.xml 中引入对应的class路径

   <mappers>
<mapper class="com.ssm.mapper.RoleMapper2"/>
</mappers>

如何获取Mapper接口?

  通过SqlSession 获取Mapper 接口,并发送SQL

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

MyBatis核心组件的更多相关文章

  1. Mybatis(四):MyBatis核心组件介绍原理解析和源码解读

    Mybatis核心成员 Configuration        MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中 SqlSession ...

  2. MyBatis的核心组件

    MyBatis的核心组件主要分为4个部分 SqlSessionFactoryBuilder(构造器):它会根据配置或者代码来生成SqlSessionFactory,采用的是分步构建的Builder模式 ...

  3. Mybatis从认识到了解

    目录 MyBatis的介绍 介绍: 为什么选择MyBatis: 与Hibernate的对比: MyBatis的优点: 入门示例 Mybatis核心组件 四大核心组件 SqlSessionFactory ...

  4. Spring Boot集成MyBatis的2种方式

    目录 写在前面 准备工作 配置数据库驱动 配置数据源 原生集成MyBatis 依赖配置 注册MyBatis核心组件 定义并使用映射器 通过MyBatis-Spring-Boot-Starter集成 默 ...

  5. MyBatis基础:MyBatis入门(1)

    1. MyBatis简介 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyBatis ...

  6. 深入浅出mybatis之入门使用

    写在前面 mybatis是一个持久层框架,可以支持SQL定制和存储过程,实现数据库记录到Java POJO对象之间的映射. 所以说,mybatis是一个ORM框架. 这个ORM可以通过2种方式实现:x ...

  7. MyBatis学习笔记(一) 概述

    一.什么是MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBat ...

  8. mybatis 原理研究

    1. mybatis 是使用JDBC来实现的, 所以需要我们首先了解JDBC 的查询 ①加载JDBC驱动 ②建立并获取数据库连接 ③设置sql语句的传递参数 ④执行sql语句并获得结果 ⑤对结果进行转 ...

  9. MyBatis(1)-- MyBatis介绍

    一.MyBatis优点 不屏蔽SQL,意味着可以更为精确地定位SQL语句,可以对其进行优化和改造,这有利于互联网系统性能的提高,符合互联网需要性能优化的特点. 提供强大.灵活的映射机制,方便Java开 ...

随机推荐

  1. 相关 Excel 开源类库性能对比

    性能数据 · Excelize 中文文档https://xuri.me/excelize/zh-hans/performance.html Golang library for reading and ...

  2. JavaScript的深拷贝

    javaScript的拷贝有浅拷贝和深拷贝.拷贝我们一般拷贝对象,获取对象的内容(字段.函数)都给复制一遍 浅拷贝:一般只是简单的赋值 //浅拷贝 var obj1={name:"cat&q ...

  3. 迷你版AOP框架

    http://www.cnblogs.com/artech/archive/2008/11/27/1342309.html

  4. java获取中文汉字的所有拼音

    java获取中文汉字的所有拼音   中文汉字可能有很多读音,java中分别用1,2,3,4来区别,例如“作”字,就有三个读音,zuo1,zuo2,zuo4. java获取汉字读音拼音代码如下所示: S ...

  5. Maven 打war包

    使用maven将项目达成war包 右击项目的跟项目,选择run as 选择maven  build.... 进入窗口,在 Goals  输入命令   clean package,选择 skip Tes ...

  6. 关于采样率&位深&码率&无损的一些心得

    转载自:https://blog.csdn.net/Marenow/article/details/85253283 记笔记,记下来自己的一些关于音频基础知识的总结. 采样率外界的声音都是模拟信号,在 ...

  7. 点击链接,取得href的值,但是不转向

    点击链接,取得href的值,但是不转向 $('.list a').click(function (e) {   e.preventDefault();//取消事件的默认动作.   $.ajax({   ...

  8. python面向对象之类属性,实例属性

    python中的属性分为类属性和实例属性,之前已经说过一些,这里主要是对类属性与实例属性的增删改查 首先是对类属性的增删改查,下面这个是对类属性的修改,在书写类时,已经对类属性occupation进行 ...

  9. iOS-NSTimer计时器

    (3) 计时器NSTimer + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget sel ...

  10. Egret入门学习日记 --- 问题汇总

    问题1: 图片无法拖入到 EXML 文件的问题 在日记 第六篇 有记载:https://www.cnblogs.com/dmc-nero/p/11188975.html 位于 3.6节 内容. 问题2 ...