前提条件:

配置好了Maven

背景:

有时候,我们想学习优秀的开源项目,但是,很多开源项目的依赖包都是通过maven配置的,如果我们想通过Eclipse学习,就得首先把Maven的配置转为Eclipse的工程。

流程如下:

1.下载MyBatis的源代码:

2.解压文件

3.运行mvn eclipse:eclipse

4.导入到Eclipse项目中

5.在Eclipse中配置Maven的路径

6.项目效果图:

https://blog.csdn.net/wtzvae/article/details/52584472

1.文件准备 
既然是学习源码,这次的就不导入mybatis的jar包,直接导入源码。 
源码下载:https://github.com/mybatis/mybatis-3/releases 

我下载了3.4.1版本的,有两个文件,source code和mybatis-3.4.1.zip,其中mybatis-3.4.1.zip中有官方的文档,可以看看。

2.项目建立

源码下载好后,我们开始新建自己的项目,把源码导入到项目中

源码结构目录如下,我们可以看出这是一个maven项目,先要配置好maven 

2.1配置maven(已有maven可以跳过) 
maven下载链接:http://maven.apache.org/download.cgi 

这里不配置maven环境变量,直接在eclipse里面配置好maven路径,想配置环境变量可以自己百度一下。 
解压出来,修改默认本地仓库的位置,本地仓库文件位置配置在${maven}/conf/setting.xml中 

从上图可以看到本地仓库默认配置在用户目录文件夹下,即c盘,注释掉。现在改到d盘,所有下载的jar就会存放到d盘。 
再到eclipse里面配置maven 

配置好settings.xml文件的位置就搞定了。

2.2建立maven项目 
new一个maven project,之前已经建好,所以下面的图片有个小红叉 

2.3导入源码 
右键项目import->file system, 选中解压后的mybatis源码文件夹,这样就可以导入mybatis的源码项目。 
刚导入时,maven下载mybatis项目需要的jar,项目会出现错误,稍等一会就好。如果还有错误,可以build path配置jdk版本,我用的是jdk1.7 

上一节已经导入了mybatis源码项目,这次我们建立一个小Demo,往数据库里插入数据,需要在pom.xml配置mysql连接的jar。

为了不影响源码项目的目录结构,新建了两个source folder存放自己编写的代码,如下图 
 
SqlSessionFactoryUtil.java

package cn.wtzvae.util;import java.io.IOException;
import java.io.Reader;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class SqlSessionFactoryUtil {public static SqlSessionFactory getSqlSessionFactory(){String path = "mybatis-config.xml";SqlSessionFactory sqlSessionFactory = null;try {Reader reader = Resources.getResourceAsReader(path);sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);} catch (IOException e) {System.out.println("获取配置文件失败");e.printStackTrace();}return sqlSessionFactory;}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><typeAliases><package name="cn.wtzvae.model"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/db_mybatis" /><property name="username" value="mybatis" /><property name="password" value="123456"/></dataSource></environment></environments><mappers><mapper resource="cn/wtzvae/mappers/PersonMapper.xml"/></mappers></configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

PersonMapper.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="cn.wtzvae.dao.PersonDao"><insert id="insert" parameterType="Person">INSERT INTO person (name, age, phone, email, address)VALUES(#{name},#{age},#{phone},#{email},#{address})</insert>   </mapper> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Person.java

package cn.wtzvae.model;public class Person {private int id;private String name;private int age;private String phone;private String email;private String address;//....getXXX();setXXX();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

PersonDao.java

package cn.wtzvae.dao;import cn.wtzvae.model.Person;public interface PersonDao {public int insert(Person p);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

TestFactory.java

package cn.wtzvae.test;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;import cn.wtzvae.dao.PersonDao;
import cn.wtzvae.model.Person;
import cn.wtzvae.util.SqlSessionFactoryUtil;public class TestFactory {@Testpublic void test(){SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory();SqlSession sqlSession = sqlSessionFactory.openSession();sqlSession.getConnection();PersonDao personDao =  sqlSession.getMapper(PersonDao.class);Person p = new Person();p.setAddress("广东省");p.setAge(12);p.setEmail("jinanvae@163.com");p.setName("啊角");p.setPhone("110");personDao.insert(p);sqlSession.commit();sqlSession.close();}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

以上是本次小demo的多有代码,之后再详细介绍mybatis的配置。成功运行测试类,往数据库插入数据。

mybatis源码学习方式相关推荐

  1. mybatis源码分析之事务管理器

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇:mybatis源码分析之Configuration 主要分析了构建SqlSessionFactory的过程中配置文件的 ...

  2. Mybatis源码解读-设计模式总结

    虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式. Mybatis至少 ...

  3. 深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)

    我们通过对mybatis源码的简单分析,可看出,在mybatis配置文件中,在configuration根节点下面,可配置properties.typeAliases.plugins.objectFa ...

  4. MyBatis源码骨架分析

    源码包分析 MyBatis 源码下载地址:https://github.com/MyBatis/MyBatis-3 MyBatis源码导入过程: 下载MyBatis的源码 检查maven的版本,必须是 ...

  5. 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...

  6. MyBatis源码-解读Executor的三个实现类之BatchExecutor(批处理执行器)

    文章目录 Pre Executor 执行器 接口继承关系 BatchExecutor(重用执行器) 入门小demo 源码 BatchExecutor VS ReuseExecutor Pre MyBa ...

  7. MyBatis源码-解读Executor的三个实现类之SimpleExecutor(简单执行器)

    文章目录 Pre Executor 执行器 接口继承关系 SimpleExecutor(简单执行器) 入门小demo 实例化SimpleExecutor doQuery方法 Pre MyBatis源码 ...

  8. MyBatis源码-深入理解MyBatis Executor的设计思想

    文章目录 Pre JDBC的执行过程 JDBC Demo JDBC Statement 接口 MyBatis执行过程 四大组件 组件之间的关系 Executor 执行器组件 架构总览 接口继承关系 P ...

  9. MyBatis 源码分析系列文章合集

    1.简介 我从七月份开始阅读MyBatis源码,并在随后的40天内陆续更新了7篇文章.起初,我只是打算通过博客的形式进行分享.但在写作的过程中,发现要分析的代码太多,以至于文章篇幅特别大.在这7篇文章 ...

  10. MyBatis 源码分析 - 插件机制

    1.简介 一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展.这样的好处是显而易见的,一是增加了框架的灵活性.二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作.以 My ...

最新文章

  1. 成功解决mod = importlib.util.module_from_spec(spec)ImportError: DLL load failed: 找不到指定的程序。
  2. 权限控制相关数据表分析和创建
  3. h2 java tcpip_windows下创建h2集群,及java集成详细步骤
  4. python-configparser模块
  5. eclipse安装阿里规范模板
  6. 配置FTP服务2(vsftpd 配置虚拟账号)
  7. 扫雷java讲解_java课程设计(扫雷游戏)讲解.doc
  8. Linux中配置网桥
  9. ADL之UI初预览 AJAX 开发
  10. ExtJS4系列目录
  11. 【手写数字识别】基于matlab GUI BP神经网络手写数字识别【含Matlab源码 518期】
  12. write.csv()函数--R语言
  13. 美国工程管理计算机方向,理工科同学必看!美国工程管理研究生申请大揭秘~...
  14. MySQL 管理表记录
  15. 一米优店宝-淘宝店铺优化软件v1.0官方
  16. win10备份为wim_在PE中使用CGI进行系统备份和还原
  17. php从入门到精通3 pdf 百度云_php从入门到精通第3版 pdf 高清无水印版
  18. Pyecharts库及其与Django的结合使用
  19. 2020年android系统版本多少,2020年的Android系统会是什么样?
  20. 代码实现HelloMeituanCom转换为hello.meituan.com

热门文章

  1. Magnet for mac(专业窗口辅助工具)支持m1
  2. 关于Tuxera NTFS mac还有你不知道的用法!教程来啦!
  3. manifest离线缓存技术
  4. javascript中的滚动到顶部和Scroll有关的方法
  5. Web常用对象(2)
  6. NOIP引水入城(dfs)
  7. centos 搭建nfs服务器
  8. ListView的adapter中getView方法一直调用
  9. linux junit
  10. Linux 查看网络速率