文档章节

MyBatis-一次查询请求源码解读

 小猪突然地
发布于 2015/06/08 21:21
字数 247
阅读 244
收藏 1

   为了分析方便,本文默认mybatis查询数据的环境已经搭建成功,在此就不累述了,我们把重点放在关键的查询代码上。

@Test
public void getById(){
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);   
    SqlSession session = sqlSessionFactory.openSession();
    Person person = session.selectList("com.chen.mapper.PersonMapper.getById", 1);
    System.out.println("id:"+person.getId()+", name:"+person.getName()+", age:"+person.getAge());
}

  mapper映射xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"   
	"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">  
        <mapper namespace="com.chen.mapper.PersonMapper">  
        
        <select id="getById" parameterType="integer" resultType="Person">  
        select * from person where id = #{id}   
</select>

  好了,关键代码就已经列出来了,下面我们着重来通过源码解读,看看mybatis做一次查询的流程就进是怎样的。

  其中,我们mybatis入口的重点代码是:

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);   
SqlSession session = sqlSessionFactory.openSession();
Person person = session.selectList("com.chen.mapper.PersonMapper.getById", 1);

   由于时间,后面将具体分析。。。。

© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 23
码字总数 20045
作品 0
成都
程序员
私信 提问
自己手写一个Mybatis框架(简化)

继上一篇手写SpringMVC之后,我最近趁热打铁,研究了一下Mybatis。MyBatis框架的核心功能其实不难,无非就是动态代理和jdbc的操作,难的是写出来可扩展,高内聚,低耦合的规范的代码。本文完...

我叫刘半仙
2018/03/07
0
3
MyBatis源码解读之延迟加载

目的 本文主要解读MyBatis 延迟加载实现原理 2. 延迟加载如何使用 Setting 参数配置 设置参数 描述 有效值 默认值 lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延迟加...

无忌
2018/07/16
0
8
Mybatis 缓存系统源码解析

本文从以下几个方面介绍: 相关文章 前言 缓存的相关接口 一级缓存的实现过程 二级缓存的实现过程 如何保证缓存的线程安全 缓存的装饰器 相关文章 Mybatis 解析 SQL 源码分析二 Mybatis Mapp...

tsmyk0715
2018/11/25
0
0
源码分析 Mybatis 的 foreach 为什么会出现性能问题

背景 最近在做一个类似于综合报表之类的东西,需要查询所有的记录(数据库记录有限制),大概有1W条记录,该报表需要三个表的数据,也就是根据这 1W 个 ID 去执行查询三次数据库,其中,有一...

TSMYK
2018/12/16
0
0
MyBatis组件之缓存实现及使用

一 .概述 先讲缓存实现,主要是mybatis一级缓存,二级缓存及缓存使用后续补充 Mybatis缓存的实现是基于Map的,从缓存里面读写数据是缓存模块的核心基础功能; 除核心功能之外,有很多额外的附...

Ala6
2018/11/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

把iOS中block代码异步执行通过信号量变成同步执行

dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); [self downZipFile:^(BOOL downSucceed) { dispatch_semaphore_signal(semaphore); }]; dispatch_semaphor......

壹峰
24分钟前
1
0
excel函数使用

拼接多个字段 =CONCATENATE(B2,C2,D2,E2) 通过函数把一个sheet里面的字段搂到另一个sheet F2 唯一匹配另一个sheet的字段。 www 另一个sheet的名称 H:I www这个sheet里面从H行到I行。 2 从第几...

贾峰uk
26分钟前
1
0
SpringBoot 集成 DBUnit 、database-rider与H2数据库进行单元测试

单元测试 什么是单元测试 参考维基百科: 单元测试(Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在...

Tree
27分钟前
0
0
java基础知识目录

java 注解

细节探索者
29分钟前
1
0
第一个网络爬虫

准备工作 http请求头概念 1、Accept :请求报头域,用于指定客户端可接受哪些类型的信息。 2、Accept-Language :指定客户端可接受的语言类型。 3、Accept-Encoding :指定客户端可接受的内容...

轻轻的往前走
37分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部