栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

看我是如何轻松拿下MyBatis源码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

看我是如何轻松拿下MyBatis源码

大家好,我是田哥

很多人都最讨厌源码,可是又感觉必须看,为什么感觉必须看?因为很多时候面试官喜欢问:你看过什么源码? 如果你肯多某个框架的源码,比如:Spring、Dubbo、MyBatis等其中的一个源码,那面试官至少可能好好的探讨一下。

其实,要想把一个框架的源码看完那到也不是很有必要,但是主要的功能源码部分肯定得熟悉。不建议大家一开始就去看Spring源码,因为Spring太庞大了,Dubbo很多人又没用过,整体来说MyBatis不管是难度系数还是使用率,都是相对适中的。

所以,我特意给大家安排了一个MyBatis源码分析专栏,本专栏是从入门到源码分析,也是市面上所讲的《从入门到精通》

本系列文章重点从下面这个案例开始:

案例

pom.xml依赖:



    4.0.0

    com.tian
    mybatis-demo
    1.0-SNAPSHOT


    
        org.mybatis
        mybatis
        3.5.7
    
    
        mysql
        mysql-connector-java
        8.0.16
    


mybatis整体配置文件:mybatis-config.xml




    
       
        
    
    
        
            
            
                
                
                
                
            
        
    
    
        
        
    

实体类User:

package com.tian.eneity;


public class User {
    private Integer id;
    private String name;
    private Integer age;
    //set get toString
}

UserMapper接口:

package com.tian.mapper;

import com.tian.eneity.User;
import org.apache.ibatis.annotations.Param;

public interface UserMapper {
    User selectUserById(@Param("id") Integer id);
}

UserMapper.xml:







MybatisApplication类:

package com.tian;

import com.tian.eneity.User;
import com.tian.mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MybatisApplication {

    public static void main(String[] args) {
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        SqlSession sqlSession = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
            //工厂模式
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            //sql操作会话
            sqlSession = sqlSessionFactory.openSession();
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            //获取数据并解析成User对象
            User user = userMapper.selectUserById(1);
            System.out.println(user);
            User user1 = userMapper.selectUserById(1);
            System.out.println(user1);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            sqlSession.close();
        }
    }
}

然后,我们采用debug模式,运行上面这段代码,可以逐行跑。同时,我们记录好执行步骤,遇到哪些疑问难点,然后在针对性的学习,比如说:JDK动态代理不会,那就可以快速去复习一下(也有专门的文章讲代理模式、动态代理),这样就更牛理解框架源码。

好了,先忙是本专栏的内容,我也会不断优化,不断完善。

专栏内容

另外,凡是购买这个专栏的朋友,可以获取一份MyBatis源码(中文注释版)

专栏地址:MyBatis源码分析(菜鸟版)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/838807.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号