1. mybatis是什么?

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,是一个基于Java的持久层框架。
       1️⃣mybatis托管到goolecode下,再后来托管到github下(https://github.com/mybatis/mybatis-3/releases)。

  2️⃣mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需要sql语句。

  3️⃣mybatis可以将向 preparedStatement中的输入参数自动进行输入映射,将查询结果集灵活映射成java对象。(输出映射)

Mybatiis介绍思维导图:https://www.edrawsoft.cn/viewer/public/s/8be08327341014

2.mybatis运行流程

3.入门程序

  3.1.搭建环境

    mybatis运行环境(jar包):

    从https://github.com/mybatis/mybatis-3/releases下载,3.2.7版本

lib下:依赖包

mybatis-3.2.7.jar:核心 包

mybatis-3.2.7.pdf,操作指南

加入mysql的驱动包

  3.2工程结构

  3.3SqlMapConfig.xml

配置mybatis的运行环境,数据源、事务等。

 <?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>
<!-- 选择数据库环境 -->
<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/jerry" />
<property name="username" value="root" />
<property name="password" value="1234" />
</dataSource>
</environment>
</environments>
</configuration>

  3.4根据员工id(主键)查询员工信息

    3.4.1创建po类(实体类)

 package com.mybatis.model;
/**
* 员工信息表实体类
* @author Administrator
*
*/
public class Emp { private Integer emp_id;
private String emp_name;
private Integer emp_age;
private Integer emp_num;
private String emp_post;
public Integer getEmp_id() {
return emp_id;
}
public void setEmp_id(Integer emp_id) {
this.emp_id = emp_id;
}
public String getEmp_name() {
return emp_name;
}
public void setEmp_name(String emp_name) {
this.emp_name = emp_name;
}
public Integer getEmp_age() {
return emp_age;
}
public void setEmp_age(Integer emp_age) {
this.emp_age = emp_age;
}
public Integer getEmp_num() {
return emp_num;
}
public void setEmp_num(Integer emp_num) {
this.emp_num = emp_num;
}
public String getEmp_post() {
return emp_post;
}
public void setEmp_post(String emp_post) {
this.emp_post = emp_post;
} }

    3.4.2 映射文件

映射文件命名:

  User.xml(原始ibatis命名),mapper代理开发映射文件名称叫XXXMapper.xml,比如:UserMapper.xml、ItemsMapper.xml    在映射文件中配置sql语句。

 <?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">
<!-- namespace 命名空间,作用就是对sql进行分类化管理,理解sql隔离。-->
<mapper namespace="test">
<!--在映射文件中可以配置很多sql语句
把所用到的sql提取到配置文件中
id:sql语句的唯一标识
parameterType:指定参数的类型
resultType:指定sql输出结果所映射的java对象类型,select指定resultType表示将单条记录映射成java对象
#{id}:其中id表示接收输入的参数,参数名就是id。如果是简单类型#{}中的参数名称可以任意写 -->
<select id="selectEmpById" parameterType="int" resultType="com.mybatis.model.Emp">
select * from emp_message where emp_id=#{id};
</select>
</mapper>

  3.4.3  在SqlMapConfig.xml加载映射文件

 <!-- 加载映射文件-->
<mappers>
<mapper resource="sqlMapper/empMapper.xml" />
</mappers>

3.5 test程序编写

 package com.mybatis.test;

 import java.io.IOException;
import java.io.InputStream;
import java.util.List; 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 com.mybatis.model.Emp; public class Test {
//根据员工id查询员工基本信息
public static void main(String[] args) {
InputStream inputStream = null;
try {
//mybatis配置文件
String reString="sqlMapConfig.xml";
//得到配置文件流
inputStream = Resources.getResourceAsStream(reString);
//创建会话工厂,传入mybatis配置文件信息
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//通过sqlSessionFactory会话工厂 得到 session
SqlSession sqlsession = sqlSessionFactory.openSession();
/**
* 通过sqlsession操作数据库
* 第一个参数:映射文件中的statement的id,等于namespace+“.”+statement的ID
* 第二个参数:指定和映射文件中parameterType参数类型所匹配的参数
* sqlsession.selectOne结果是与映射文件中resultType返回类型所匹配的对象
*/
Emp emp=sqlsession.selectOne("test.selectEmpById", 1);
System.out.println(emp);
//释放资源
sqlsession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}

3.6.测试结果

MyBatis运行流程及入门第一个程序的更多相关文章

  1. mybatis入门-第一个程序

    今天,我们就一起来完成mybatis的第一个小demo,使用mybatis对我们的数据库进行一个小小的操作. 需求 根据用户id查询用户的信息. 环境搭建 java环境:jdk1.7版本 开发工具:e ...

  2. OPENGL的入门第一个程序——Hello World

    #include "stdafx.h" #include<GL\glut.h> void Init() { glClearColor(0.0f,0.0f,0.0f,0. ...

  3. 浅析MyBatis(一):由一个快速案例剖析MyBatis的整体架构与运行流程

    MyBatis 是轻量级的 Java 持久层中间件,完全基于 JDBC 实现持久化的数据访问,支持以 xml 和注解的形式进行配置,能灵活.简单地进行 SQL 映射,也提供了比 JDBC 更丰富的结果 ...

  4. [MapReduce_3] MapReduce 程序运行流程解析

    0. 说明 Word Count 程序运行流程解析 &&  MapReduce 程序运行流程解析 1. Word Count 程序运行流程解析 2. MapReduce 程序运行流程图

  5. Python程序运行流程与垃圾回收机制

    Python程序运行流程 Python解释器首先将程序将py文件编译成一个字节码对象PyCodeObject(只存在于内存中).(当这个模块的 Python 代码执行完后,就会将编译结果保存到了pyc ...

  6. GO 第一个程序Hello world

    第一个程序:HelloWorld 一.go项目工程结构 配置好工作目录后,就可以编码开发了,在这之前,我们看下go的通用项目结构,这里的结构主要是源代码相应地资源文件存放目录结构. 1.1 gopat ...

  7. Java入门——编写并运行第一个程序

    Java入门——编写并运行第一个程序 摘要:本文主要介绍如何使用Java语言编写并通过DOS运行简单的程序. 编写简单的程序 在D盘新建一个文本文档,输入如下代码: class Hello { pub ...

  8. springmvc 运行原理 Spring ioc的实现原理 Mybatis工作流程 spring AOP实现原理

    SpringMVC的工作原理图: SpringMVC流程 . 用户发送请求至前端控制器DispatcherServlet. . DispatcherServlet收到请求调用HandlerMappin ...

  9. MyBatis 框架之快速入门程序

    一.使用 IDEA 快速创建 Maven 项目 关于如何快速创建 Maven 项目,这个可以参考下面这篇文章: Maven 项目管理工具基础入门系列(一) 二.快速配置 MyBatis 依赖 jar ...

随机推荐

  1. day03: copy的总结(20170215)

    import copynames = ["88xiaoming","liuhai","杨东","liuhai",&quo ...

  2. 疯狂VirtualBox实战讲学录 以及 virtualbox完全学习手册 之我见

    都是是很专业,并钻石得很深的内容,但,有些事情是交替进行着的深入,太专注于VIRTUAL BOX就必要要牺牲其它的东西.

  3. 苏浪浪 201771010120 第四周 Java基本程序设计总结

    第四章   对象与类 学习目标 掌握类与对象的基础概念,理解类与对象的关系: 掌握对象与对象变量的关系: 掌握预定义类的基本使用方法,熟悉Math类.String类.math类.Scanner类.Lo ...

  4. Java操作XML(1)

    XML简介 XML(Extensible Markup Language)是一种非常有用的迷哦书结构化信息的技术.XML工具使处理和转化信息变得十分容易. 在程序中,可以使用属性文件(property ...

  5. Java 对象的封装,继承,抽象,接口写法

    面向对象的封装写法        关键字 private class A    {        private int a=1;        private void work()         ...

  6. Kubernetes学习笔记(七):访问Pod元数据与Kubernetes API

    Downward API 我们已经了解到,使用ConfigMap和Secret向应用传递配置数据,这对于运行前预设的数据是可行的.但是对于那些不能预先知道的,就需要使用Downward API. Do ...

  7. 剑指Offer之调整数组顺序使奇数位于偶数前面

    题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变.   思路:将奇数放进 ...

  8. 国家集训队 部落战争 网络流最小路径覆盖 洛谷P2172

    洛谷AC传送门! step1: 题目大意 有一张M x N的网格图,有一些点为“ * ”可以走,有一些点为“ x ”不能走,每走一步你都可以移动R * C 个格子(参考象棋中马的走法),且不能回头,已 ...

  9. 我的第一个jQuery插件开发(日期选择器,datePicker),功能还不完善,但用于学习参考已经足够了。

    一.学习jQuery插件开发网上的帖子很多,插件开发的方式也有好几种,现在推荐一个帖子讲述的特别好,我也是这篇文张的基础上学习的. 参考:http://www.cnblogs.com/ajianbey ...

  10. 通过一个vue+elementUI的小实例来讲解一下它们是如何使用的

    需求:点击一个按钮,弹出一个模态框,这个模态框有两个tab,tab中是各种报警条件,这些报警条件是从数据库中动态取出的,数据库中数据变更后,这个界面也要变更,我们可以查看和编辑这些报警条件.底部“确定 ...