一、mybatis是什么

  mybatis是一个持久层的框架,它可以完全替代JDBC,同时提供接口编程。它访问DAO层是不需要实现类的,只需要一个接口和XML文件(或注解)。mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需要sql语句。mybatis可以将向 preparedStatement中的输入参数自动进行输入映射,将查询结果集灵活映射成java对象。(输出映射)。

  mybatis将数据库的表和POJO映射起来,这样程序员就可以操作POJP来完成相关的逻辑。

二、mybatis框架原理

三、mybatis开发所需jar包

lib下:依赖包

mybatis.jar:核心包

mysql的驱动包

四、配置文件

1、log4j.properties

2、sqlMapConfig.xml   :   配置mybatis的运行环境,数据源、事务等

3、xxxMapper.xml  :   主要是配置sql语句

五、流程分析

1、MyBatis首先通过配置去生成工厂:SqlSessionFactory。MyBatis提供了构造器SqlSessionFactoryBuilder,它提供了了一个类Configuration来完成构建。

   但是我们只要调用SqlSessionFactoryBuilder.build( )就可以得到一个SqlSessionFactory对象,具体完成交给Configuration

   工厂可以看作是一个数据库连接池,采用单例模式;

   除了通过XML配置文件文件,还可通过java代码来生产工厂,效果一样但比较麻烦,所以推荐用XML方式。

 sqlMapConfig.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>
   <!--把数据库驱动密码等参数写在配置文件中,方便管理,导入使用即可-->
<properties resource="db.properties"/> <!-- 和spring整合后 environments配置将废除-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!--将来也交个Spring管理-->
<mappers>
<mapper resource="customerMapper.xml"/>//扫描某一个映射器
<package name="com.dongtian.mapper"/>//扫描该包下的所以映射器
</mappers>
</configuration>

2、创建工厂的作用是为了创建SqlSession对象,通过工厂的方法:SqlSessionFactory.openSession( ) 可以得到一个SqlSession对象。

   SqlSession的作用类类似于JDBC一个Connection对象,代表一个连接资源的启用。

   具体作用:获取Mapper接口,

        发送SQL给数据库:其实是Executor在干活。SqlSession.getMapper(xxxMapper.class):获取mapper结果,然后通过接口调用接口方法。

        控制数据库事务

3、映射器:由一个接口和一个XML文件组成(一一对应)。作用是把SQL查询结果映射成为一个POJO。

       接口中定义对数据库操作的方法:public User getUser(String id);通过id查User对象

       UserMapper.java

public interface CustomerMapper {
public Customer findUserById(String cname) throws Exception;
}
<!--UserMapper.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"> <mapper namespace="com.dongtian.mapper.CustomerMapper">
<select id="findUserById" parameterType="java.lang.String" resultType="com.dongtian.dao.Customer">
SELECT * FROM t_customer WHERE cname = #{value}
</select> </mapper>

除了用XML方式外,还可通过注解的方法

public interface CustomerMapper {
@Select("SELECT * FROM t_customer WHERE cname = #{value}")
public Customer findUserById(String cname) throws Exception; }

Mybatis 学习一的更多相关文章

  1. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...

  2. MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: m ...

  3. MyBatis学习总结(七)——Mybatis缓存(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的 ...

  4. (原创)mybatis学习二,spring和mybatis的融合

    mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...

  5. (原创)mybatis学习一,夯实基础

    一,what?(是什么) MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可 ...

  6. MyBatis学习--简单的增删改查

    jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...

  7. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  8. 【Todo】Mybatis学习-偏理论

    之前写过好几篇Mybatis相关的文章: http://www.cnblogs.com/charlesblc/p/5906431.html  <SSM(SpringMVC+Spring+Myba ...

  9. MyBatis学习系列三——结合Spring

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...

  10. MyBatis学习系列二——增删改查

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...

随机推荐

  1. 第1节 Scala基础语法:1、2、概述,什么是scala

    Scala编程 1.    课程目标 1.1.  目标1:熟练使用scala编写Spark程序 1.2.  目标2:动手编写一个简易版的Spark通信框架 1.3.  目标3:为阅读Spark内核源码 ...

  2. Linux centosVMware Tomcat介绍、安装jdk、安装Tomcat

    一.Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开 ...

  3. 收藏 40 2 CPD (广告合作方式)

    CPD,Cost per day的缩写,意思是按天收费,是一种广告合作方式. 在实际的广告合作中根据行业不同还包括Cost per Download的缩写含义,意思是依据实际下载量收费.   “CPD ...

  4. 【快学springboot】1.快速创建springboot项目

    若图片查看异常,请前往掘金查看:https://juejin.im/post/5d00e793f265da1b614ff10b 使用spring initialize工具快速创建springboot项 ...

  5. 实验一 git代码版本管理

    实验目的 1. 了解分布式系统版本管理的核心机理. 2. 熟练掌握 git 的基本指令和分支管理指令. 实验内容 1. 安装 git.2. 初始化配置 git,git init ,git status ...

  6. P1001 A+B Format

    转跳点:

  7. DeepCTR-Torch

    仅作学习使用 在ubuntu安装成功了,可以运行example.jump2 但是在mac没有成功,报错 ImportError: No module named torch

  8. 新闻网大数据实时分析可视化系统项目——11、MySQL安装

    1.修改yum源 鉴于用国外的Yum源,速度比较慢,所以想到将国外的yum源改为国内的Yum源,这里选择使用比较多的阿里云源.具体修改方法可以参考此连接 2.在线安装mysql 通过yum在线mysq ...

  9. JS 自动返回每个月的天数

    );//M代表月份,可以自己手动设置或者选择 date.setDate() var num = date.getDate(); console.log(num) //输出每个月的天数 var time ...

  10. Windows中使用QEMU创建树莓派虚拟机

    环境: windows 10 2018-04-18-raspbian-stretch.img 一.下载QEMU 根据你的系统情况,下载相应的版本,并安装完成 https://www.qemu.org/ ...