一、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. 从Uber司机只是合同工看,零工经济将受沉重打击?

    Uber自诞生以来,就始终处于漩涡之中--与当地的同类平台斗.创始人出现负面新闻.司机不断抗议--而就在近日"流血上市"后,Uber也没能迎来好时光.反而是股价不断下跌,市值疯狂蒸 ...

  2. 三、linux基础-常用命令man_cd_|_find_ln_>_history

    3通用命令3.1 man命令man pwd      来查看该命令的全部帮助手册备注:命令最终是在内核中执行的,但是内核并无法直接识别,所以先通过shell执行,然后再交给内核执行3.2 cd 命令c ...

  3. 转:Entity Framework 5.0 Code First全面学习

    Code First 约定 借助 CodeFirst,可通过使用 C# 或Visual Basic .NET 类来描述模型.模型的基本形状可通过约定来检测.约定是规则集,用于在使用 Code Firs ...

  4. Python 基础之序列化模块pickle与json

    一:pickle 序列化模块把不能够直接存储的数据,变得可存储就是序列化把存储好的数据,转化成原本的数据类型,加做反序列化 php: 序列化和反序列化(1)serialize(2)unserializ ...

  5. 工具 - brackets

    常用插件 blueprint beta file tree view indent guidelines

  6. Ideone:在线多语言编程执行器工具

    Ideone:在线多语言编程执行器工具此网站提供40种编程语言以上, 能在线直接做编译和执行的动作,该工具是一款简易的编程测试工具,虽然不能替代专业版的工具,但是其功能非常全面. Ideone,一款在 ...

  7. js实现深度拷贝

    js实现拷贝,使用普通赋值对象,在操作其中一个对象值的时候,另一个也会更改,不符合需求 因此引入深度拷贝,以下为实现深度拷贝的几种法: Object.assign // 合并多个对象 var targ ...

  8. 树莓派4b烧录系统

    树莓派4b烧录系统 树莓派 型号:树莓派4b 系统:raspbian-buster-full 1.先用SDFormatterv4格式化sd卡 2.用win32diskimager-v0.9-binar ...

  9. Spring事务服务

    Spring事务服务 (2013-07-22 11:13:36) 转载▼ 标签: 事务管理 ssh 分类: Sping Spring为事务管理提供了一流的支持.同时支持编程式事务和声明式事务.无论是编 ...

  10. Spring框架的配置文件

    Spring框架的配置文件 (2014-12-18 20:43:42) 转载▼ 标签: 配置文件 例子 构造函数 成员 spring 分类: 专业知识 (注:文中的"<"均需 ...