mybatis源码学习之基础工程准备

原创 2017年01月03日 19:36:06

mybatis源码学习及分析——基础工程准备

转行做Java一年了,基本的框架等会用,但总停留在表面,未能够深入学习。今年需要多多学习主流框架的源码,提高自己的编码水平。

1.Maven依赖

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.39</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.1</version>
</dependency>

可选项:slf4j、junit、fastjson、guava等根据自己需要添加。

2.工程结构
这里写图片描述

3.Entity

package com.cumt.mybatisstudy.entity;

import java.util.Date;

/**
 * Created by caicf on 2017/1/3.
 */
public class User {

    private int id;

    private String name;

    private int age;

    private Date createDate;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Date getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }
}

4.mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <typeAliases>
        <typeAlias alias="User" type="com.cumt.mybatisstudy.entity.User"/>
    </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/mybatis_study"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

5.Mapper接口及映射文件

public interface UserMapper {

    User findById(int id);

}

UserMapper.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.cumt.mybatisstudy.mapper.UserMapper">

    <resultMap id="baseRs" type="com.cumt.mybatisstudy.entity.User">
        <id column="id" property="id" javaType="java.lang.Integer"/>
        <id column="name" property="name" javaType="java.lang.String"/>
        <id column="age" property="age" javaType="java.lang.Integer"/>
        <id column="create_date" property="createDate" javaType="java.util.Date"/>
    </resultMap>

    <select id="findById" parameterType="int" resultMap="baseRs">
        select * from `user` where id = #{id}
    </select>
</mapper>

6.创建数据库及数据表

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `create_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'as', '12', '2017-01-03 16:30:43');

7.新建测试类用来Debug源码

public class MybatisStart {
    private static final Logger log = LoggerFactory.getLogger(MybatisStart.class);

    @Test
    public void queryTest() throws IOException {
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession session = sqlSessionFactory.openSession();
        UserMapper userMapper = session.getMapper(UserMapper.class);
        User user = userMapper.findById(1);
        log.info("name= {} ; age= {}", user.getName(), user.getAge());
    }
}

执行queryTest可以看到日志:

这里写图片描述

至此,基本的配置完成,接下来通过断点跟踪源码的执行过程。

附:工程文件地址 http://git.oschina.net/cai_cf/MybatisStudy

版权声明:本文为博主原创文章,未经博主允许不得转载。

框架学习系列 mybatis 第三篇 mybatis入门程序之工程项目的搭建

本节主要内容 1:mybatis入门程序工程项目搭建 2:代码实现 3:总结&下节预告 本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第三篇 mybatis入门程序之工程项目的搭...
  • gebitan505
  • gebitan505
  • 2017年08月04日 18:11
  • 331

MyBatis基础知识

dao:RoleMapper.java package cn.bdqn.dao; import java.util.List; import cn.bdqn.pojo.Role; public ...
  • yang_ai
  • yang_ai
  • 2016年07月29日 16:57
  • 631

Java基础笔记——学习Java前的准备

接下来的一个月我会和大家分享我学JavaSE时候的笔记,分享是最好的老师,希望我的笔记能给大家一些帮助。 我会每天发一篇文章,这些都是我学Java时候的精华,当然,每一篇笔记我都会精心修改,使得知识...
  • u010425776
  • u010425776
  • 2015年05月11日 08:06
  • 1440

Mybatis最入门---HelloWorld

[一步是咫尺,一步即天涯] 上文中,我们已经演示了MySQL的安装配置,以及图形化管理工具的安装配置。本文,我们正式开始介绍当下流行Mybatis的使用方法,关于Mybatis的介绍,请进入传送门:M...
  • ABCD898989
  • ABCD898989
  • 2016年04月17日 18:55
  • 3834

MyBatis架构设计及源代码分析系列(一):MyBatis架构

如果不太熟悉MyBatis使用的请先参见MyBatis官方文档,这对理解其架构设计和源码分析有很大好处。 一、概述 MyBatis并不是一个完整的ORM框架,其官方首页是这么介绍自己 T...
  • wangshfa
  • wangshfa
  • 2015年07月01日 19:02
  • 3656

Mybatis学习总结二

1.传递pojo对象 Mybatis使用ognl表达式解析对象字段的值,如下例子: select * from user where id=#{id} and username lik...
  • u012730299
  • u012730299
  • 2016年05月20日 11:27
  • 421

学习SSM之MyBatis

在做项目的时候与后台对接接口,然而新来的后台哥哥从来没有写过接口经常返回无用的数据或者没有设定默认值,无法直接解析成JavaBean还要自己一个个的Set,然而并卵跟后台对接半天还是这样不对哪里不对的...
  • xx244488877
  • xx244488877
  • 2017年02月11日 15:01
  • 344

网络黑客攻防学习平台之基础关第三题

网络黑客攻防学习平台之基础关第三题
  • baigoocn
  • baigoocn
  • 2016年05月20日 22:49
  • 665

MyBatis学习(二)--走进MyBatis的世界

mybatis是个持久层的框架,用来执行数据库操作的,无外乎增删改查,上一节对mybatis有了宏观上的了解后,这一篇博客主要通过一个小示例来入门mybatis,先看一下要写的示例需求: 根...
  • enen199202
  • enen199202
  • 2016年08月15日 14:54
  • 252

mybatis学习之路----#{}, ${}两种传参数方式的区别--附源码解读

点滴记载,点滴进步,愿自己更上一层楼。
  • xu1916659422
  • xu1916659422
  • 2017年09月09日 21:38
  • 284
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mybatis源码学习之基础工程准备
举报原因:
原因补充:

(最多只允许输入30个字)