MyBatis核心组件
- SqlSessionFactoryBuilder (构造器)
- 会根据配置或者代码来生成SqlSessionFactory
- SqlSessionFactory (工厂接口)
- 以后他来生成SqlSession
- SqlSession (会话)
- 一个既可以发送SLQ执行返回结果,也可以获取Mapper的接口
- SQL Mapper (映射器)
- 负责发送SQL 去执行,并返回结果。
使用MyBatis 肯定是要生成 SqlSessionFactory
1.通过读取xml 配置文件用SqlSessionFactoryBuilder 生成
2.通过代码用 SqlSessionFactoryBuilder 生成
SqlSessionFactory的作用?
sqlSessionFactory 唯一的作用就是生产 MyBatis的核心接口对象SqlSession
一般采用单例模式处理它
SqlSession的作用?
SqlSession 的作用类似一个JDBC中的 Connection 对象代表着一个连接资源的启用。
具体
- 获取Mapper 接口
- 发送 SQL语句 给数据库
- 控制数据库事务
- commit()
如何获得 SqlSession?
SqlSession sqlSession = SqlSessionFactoty.opensession();
SQL Mapper (映射器)的作用?
- 描述映射规则。
- 提供SQL语句,并可以配置SQL参数类型,返回类型,缓存刷新等信息。
- 配置缓存
- 提供动态 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核心组件的更多相关文章
- Mybatis(四):MyBatis核心组件介绍原理解析和源码解读
Mybatis核心成员 Configuration MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中 SqlSession ...
- MyBatis的核心组件
MyBatis的核心组件主要分为4个部分 SqlSessionFactoryBuilder(构造器):它会根据配置或者代码来生成SqlSessionFactory,采用的是分步构建的Builder模式 ...
- Mybatis从认识到了解
目录 MyBatis的介绍 介绍: 为什么选择MyBatis: 与Hibernate的对比: MyBatis的优点: 入门示例 Mybatis核心组件 四大核心组件 SqlSessionFactory ...
- Spring Boot集成MyBatis的2种方式
目录 写在前面 准备工作 配置数据库驱动 配置数据源 原生集成MyBatis 依赖配置 注册MyBatis核心组件 定义并使用映射器 通过MyBatis-Spring-Boot-Starter集成 默 ...
- MyBatis基础:MyBatis入门(1)
1. MyBatis简介 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyBatis ...
- 深入浅出mybatis之入门使用
写在前面 mybatis是一个持久层框架,可以支持SQL定制和存储过程,实现数据库记录到Java POJO对象之间的映射. 所以说,mybatis是一个ORM框架. 这个ORM可以通过2种方式实现:x ...
- MyBatis学习笔记(一) 概述
一.什么是MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBat ...
- mybatis 原理研究
1. mybatis 是使用JDBC来实现的, 所以需要我们首先了解JDBC 的查询 ①加载JDBC驱动 ②建立并获取数据库连接 ③设置sql语句的传递参数 ④执行sql语句并获得结果 ⑤对结果进行转 ...
- MyBatis(1)-- MyBatis介绍
一.MyBatis优点 不屏蔽SQL,意味着可以更为精确地定位SQL语句,可以对其进行优化和改造,这有利于互联网系统性能的提高,符合互联网需要性能优化的特点. 提供强大.灵活的映射机制,方便Java开 ...
随机推荐
- Mercury:唯品会全链路应用监控系统解决方案详解(含PPT)
Mercury:唯品会全链路应用监控系统解决方案详解(含PPT) 原创: 姚捷 高可用架构 2016-08-08
- Tosca TestCases: Update all,Checkin all,Checkout,Checkout Tree
#记录一下TestCases Module 红框里面这几个button的功能 #Update all 从数据库里把别人最新checkin的东西给拽出来查看,也就是拿最新版本 #Checkin all ...
- requests与urllib.request
requests很明显,在写法上与urllib.request不同,前者多一个 S.导入包时:import requestsimport urllib.requesturllib.request请求模 ...
- 002-poi-excel-导出设置单元格数据校验规则、筛选功能
一.数据验证概述 推荐以下操作在2007之后操作 1.1.查看excel的数据验证 1.进入 2.设置规则 通过验证条件允许,可以看到是每个单元格默认只成立一种条件 1.2.POI代码开发-数据验证 ...
- C++队列和链表
1.什么是队列[queue] 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表. 关于队列 ...
- springmvc+mybatis多数据源配置,AOP注解动态切换数据源
springmvc与springboot没多大区别,springboot一个jar包配置几乎包含了所有springmvc,也不需要繁琐的xml配置,springmvc需要配置多种jar包,需要繁琐的x ...
- 第一次打开PyCharm的基本操作(附图)
第一次打开PyCharm可能需要修改一些个性化和了解一些基本操作,有助于接下来的学习过程.(后续可能会更新) 我的版本是64位的1.3 1.换界面皮肤 默认黑色的,不喜欢黑色皮肤可以换成白色的 Fil ...
- 【miscellaneous】GStreamer下的音视频播放
Gst-launch命令: gst-launch filesrc location=*.* ! demux name=demux demux.video_00 ! queue ! decoder ! ...
- C#实现动态发布IIS站点帮助类
准备工作: 1.引用 System.DirectoryServices 系统程序集 2.引用 Microsoft.Web.Administration 程序集,类库位置在 C:\Windows\Sys ...
- Qt 和 Boost关于信号和槽的对比说明
对比 无论是 Qt 的实现方式还是 Boost 的实现方式,除了必须的定义信号和槽的类之外,都不需要额外的类. 两种实现都解决了类爆炸的问题.下面让我们对照着来看一下我们前面的分析. 两个不同的术语以 ...