一、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. 02-08Android学习进度报告八

    今天主要学习了昨天还没有学习完的Date & Time组件的知识. 首先是DatePicker(日期选择器) android:calendarTextColor : 日历列表的文本的颜色 an ...

  2. web-pc项目中index页面分析

    先上HTML代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pag ...

  3. HTML标签,CSS简介

    一  http://www.w3school.com.cn/tags/tag_span.asp

  4. SRS源码——Listener

    1. 整理了一下Listener相关的UML类图:

  5. Django 执行 manage 命令方式

    本人使用的Pycharm作为开发工具,可以在顶部菜单栏的Tools->Run manage.py Task直接打开manager 命令控制台 打开后在底部会有命令窗口: 或者,也可以在Pytho ...

  6. 十一 队列 Queue

    队列:  一种先进先出的数据结构  FIFO 数组队列的实现:

  7. 通过python 构建一个简单的聊天服务器

    构建一个 Python 聊天服务器 一个简单的聊天服务器 现在您已经了解了 Python 中基本的网络 API:接下来可以在一个简单的应用程序中应用这些知识了.在本节中,将构建一个简单的聊天服务器.使 ...

  8. Django 3.0 中连接mysql 8.0,可以不使用pymysql ,升级Mysqlclient即可

    python 中,连接mysql一般都推荐用pymysql ,而且在django中,网上的教程都是这么连接mysql的. import pymysql pymysql.install_as_MySQL ...

  9. PCA主成分分析算法的数学原理推导

    PCA(Principal Component Analysis)主成分分析法的数学原理推导1.主成分分析法PCA的特点与作用如下:(1)是一种非监督学习的机器学习算法(2)主要用于数据的降维(3)通 ...

  10. Linux 安装 go 以及 arm linux 移植 go

    背景 Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性. 从Go1.4之后Go语言的编译器完全由Go语言编写,所以为了从源代码 ...