一,what?(是什么)

  MyBatis是一个支持普通SQL查询存储过程高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的用于配置和原始映射XML或注解,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

二,why?(为什么)

  1.   另外一个持久层框架式hibernate,这个框架和hibernate框架有什么不一样的么?我在网上查找资料后,得出主要一下几点:
  2.   hibernate是将jdbc进一步封装,而mybatis是原生态的jdbc,从这一点来说,mybatis的效率会更高一点
  3.   mybaits相对来说上手容易一些
  4.   最重要的区别是什么呢,hibernate在查询的时候眉毛胡子一把抓,不管是不是需要的,都拿来,这对数据量很大的来说,可能会影响性能,而mybaits是取其需要的即可

  上面的对比还是比较浅薄的,更深层次的对比详见下面的知乎的连接连接回答 MyBatis和Hibernate相比,优势在哪里?

三,how?(怎么做)

  下面来介绍最最重要的一部分,就是怎么用。这个有一个教程写的很好,我在这就不在重复了,直接看连接

  mybatis学习总结

四,关于mybatisutils.class的联想,为mybatis和spring,springMVC融合做准备

对于mybatis来说,主要是获取SqlSessionFactory,然后来获取SqlSession,请看下面代码:

package org.app.test;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class mybatisUtils {
private static SqlSessionFactory ssf = null;
static {
String confpath = "conf.xml";
InputStream inputs;
// 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = mybatisUtils.class.getClassLoader()
.getResourceAsStream(confpath);
// inputs = Resources.getResourceAsStream(confpath);
ssf = new SqlSessionFactoryBuilder().build(is);
} public static SqlSession getSqlSession() {
return ssf.openSession();
} public static SqlSession getSqlSession(boolean autocommit){
return ssf.openSession(autocommit);
}
}

附件: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>
<properties resource="db.properties"></properties>
<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" />
<property name="username" value="${name}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/mapping/userMapper.xml" />
</mappers>
</configuration>

上面这段代码就是mybaits根据config文件来获取相关的数据库配置信息,那么有没有这样的一种类,可以接管mybatisutils.class这个类的功能,也就是说,如果接管了这个功能,并且能够生成SqlSession,那么是不是就可以融入到这个mybatis框架中了?

对,有这种类,这就是后来的spring和mybatis的融合,spring框架接管mybatisutils.class这样的类,而Srping框架中类名不叫mybatisutils.class,而是功能更加强大的SqlSessionDaoSupport类。

下一节,我们来学习:Spring和mybatis的融合

(原创)mybatis学习一,夯实基础的更多相关文章

  1. MyBatis:学习笔记(1)——基础知识

    MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...

  2. mybatis学习笔记之基础复习(3)

    mybatis学习笔记之基础复习(3) mybatis是什么? mybatis是一个持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己编写, 但是mybatis也是有映射(输 ...

  3. mybatis学习笔记之基础框架(2)

    mybatis学习笔记之基础框架(2) mybatis是一个持久层的框架,是apache下的顶级项目. mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足s ...

  4. MyBatis学习笔记(1) —— 基础知识

    mybatis 是支持普通SQL查询,存储过程和高级映射的优秀持久层框架,mybatis 清除了几乎所有的jdbc代码和参数的手工设置及对结果集的检索封装.mybatis可以使用简单的xml和注解用于 ...

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

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

  6. 【原创 深度学习与TensorFlow 动手实践系列 - 3】第三课:卷积神经网络 - 基础篇

    [原创 深度学习与TensorFlow 动手实践系列 - 3]第三课:卷积神经网络 - 基础篇 提纲: 1. 链式反向梯度传到 2. 卷积神经网络 - 卷积层 3. 卷积神经网络 - 功能层 4. 实 ...

  7. Mybatis学习---基础知识考核

    MyBatis 2.什么是MyBatis的接口绑定,有什么好处 接口映射就是在IBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,    我们直接调用接口方法就可以,这样比起原来了Sql ...

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

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

  9. mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)

    文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...

随机推荐

  1. 【Gson】2.2.4 StackOverflowError 异常

    正文 错误: 08-09 09:56:51.904: E/AndroidRuntime(16384): java.lang.StackOverflowError 08-09 09:56:51.904: ...

  2. OC NSFileManager(文件路径操作)

    OC NSFileManager(文件路径操作) 初始化 NSFileManager * fm = [NSFileManager defaultManager]; 获取当前目录 [fm current ...

  3. iOS 杂笔-22(万年一遇~一张图片对代理的理解)

    iOS 杂笔-22(万年一遇~一张图片对代理的理解) 建议:本博客需要对代理有一定了解方可阅读(反正我也管不到) 图片 在图片之外设置协议(没有这东西这篇博客也就是夭折了) 下面我对图片中出现的形形色 ...

  4. WPF学习之路(七)应用程序和窗口

    手动创建应用程序 1.创建Empty Project 2.添加引用 3.添加 ManualApp.cs 并添加下面的代码 [STAThread] public static void Main() { ...

  5. nodejs学习笔记(2)--Express下安装模版引擎ejs

    成功安装完express后,输入express -help,根据提示安装ejs(如下图): 根据提示-e实现安装ejs,注意此处有坑:之前安装的时候根据教程(node.js开发指南第五章5.2.2节) ...

  6. oracle基础知识

    -- 表 create table test (names varchar2(12),                    dates date,                    num    ...

  7. JSON格式互转集合

    在工作中我们经常会遇到格式转换的问题,有的时候是将JSON转换成DataTable.DataSet或是List等,也有可能将DataTable.DataSet或是List转换成JSON的,抽了点时间把 ...

  8. Sql Server 2008R2 遇到了BCP导入各种中文乱码的问题

    今天玩BCP导入数据的时候,有文件格式,有中文字符串问题……以下是历程,和大家分享一下,希望不要走我的弯路 主要那个表是一个翻译表,一个文件里面内涵几十种语言,所以很容易发现问题. 0.使用最常用的语 ...

  9. JavaEE7 HTML5利用WebSocket实现即时通讯

    HTML5给Web浏览器带来了全双工TCP连接websocket标准服务器的能力. 换句话说,浏览器能够与服务器建立连接,通过已建立的通信信道来发送和接收数据而不需要由HTTP协议引入额外其他的开销来 ...

  10. android RelativeLayout 动态设置高度

    定义: private RelativeLayout mrlay; 调高度: mrlay = (RelativeLayout) findViewById(R.id.rlay_1); android.v ...