(原创)mybatis学习一,夯实基础
一,what?(是什么)
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的用于配置和原始映射XML或注解,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
二,why?(为什么)
- 另外一个持久层框架式hibernate,这个框架和hibernate框架有什么不一样的么?我在网上查找资料后,得出主要一下几点:
- hibernate是将jdbc进一步封装,而mybatis是原生态的jdbc,从这一点来说,mybatis的效率会更高一点
- mybaits相对来说上手容易一些
- 最重要的区别是什么呢,hibernate在查询的时候眉毛胡子一把抓,不管是不是需要的,都拿来,这对数据量很大的来说,可能会影响性能,而mybaits是取其需要的即可
上面的对比还是比较浅薄的,更深层次的对比详见下面的知乎的连接连接回答 MyBatis和Hibernate相比,优势在哪里?
三,how?(怎么做)
下面来介绍最最重要的一部分,就是怎么用。这个有一个教程写的很好,我在这就不在重复了,直接看连接
四,关于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学习一,夯实基础的更多相关文章
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- mybatis学习笔记之基础复习(3)
mybatis学习笔记之基础复习(3) mybatis是什么? mybatis是一个持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己编写, 但是mybatis也是有映射(输 ...
- mybatis学习笔记之基础框架(2)
mybatis学习笔记之基础框架(2) mybatis是一个持久层的框架,是apache下的顶级项目. mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足s ...
- MyBatis学习笔记(1) —— 基础知识
mybatis 是支持普通SQL查询,存储过程和高级映射的优秀持久层框架,mybatis 清除了几乎所有的jdbc代码和参数的手工设置及对结果集的检索封装.mybatis可以使用简单的xml和注解用于 ...
- (原创)mybatis学习二,spring和mybatis的融合
mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...
- 【原创 深度学习与TensorFlow 动手实践系列 - 3】第三课:卷积神经网络 - 基础篇
[原创 深度学习与TensorFlow 动手实践系列 - 3]第三课:卷积神经网络 - 基础篇 提纲: 1. 链式反向梯度传到 2. 卷积神经网络 - 卷积层 3. 卷积神经网络 - 功能层 4. 实 ...
- Mybatis学习---基础知识考核
MyBatis 2.什么是MyBatis的接口绑定,有什么好处 接口映射就是在IBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定, 我们直接调用接口方法就可以,这样比起原来了Sql ...
- 【Todo】Mybatis学习-偏理论
之前写过好几篇Mybatis相关的文章: http://www.cnblogs.com/charlesblc/p/5906431.html <SSM(SpringMVC+Spring+Myba ...
- mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)
文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...
随机推荐
- 你真的了解UIViewController生命周期吗?
一:首先了解一下生命周期图 二:UIViewController 生命周期介绍 1.通过alloc init 分配内存,初始化controller. 2.loadView loadView方法默认实现 ...
- Facebook开源动画库 POP-POPDecayAnimation运用
关于POPDecayAnimation的介绍先引用别人写的一些内容,基本上把它的一些注意点都说明了: Decay Animation 就是 POP 提供的另外一个非常特别的动画,他实现了一个衰减的效果 ...
- mysql replace 替换函数
UPDATE ecm_goods SET description = replace(description,'原字符串', '替换为') WHERE 条件;
- 学习 HTML5-目录
1.学习 HTML5-页面结构 2.HTML5标记 3.HTML5机构化语义元素 4.HTML5表单 5.HTML5媒体元素:Audio和Video 6.HTML5绘图API 7.HTML5 Canv ...
- GitHub Desktop 桌面工具,离线版本下载(无需考虑网络问题)
http://pan.baidu.com/s/1qYq4X0C GitHub Desktop 桌面工具,离线版本下载 对于网络不好,不稳定,安装多次都不成功的,这是你们的最好的安装方法了.
- SSH加载顺序问题
http://bbs.csdn.net/topics/390299835 个人总结 1.项目启动首先加载WEB.xml文件 wen.xml文件中有 <!-- tomcat默认生成的地方是 ...
- LoadRunner性能测试巧匠训练营
<LoadRunner性能测试巧匠训练营>基本信息作者: 赵强 邹伟伟 任健勇 丛书名: 实战出版社:机械工业出版社ISBN:9787111487005上架时间:2015-1-7出版日期: ...
- Java中Date的比较(befor与after方法的缺陷)
java.util.Date中的before和after方法只会比较到Day,不管你的date是yyyy-MM-dd HH:mm:ss还是yyyy-MM-dd格式的.最好用getTime()来比较具体 ...
- python写的分析mysql binlog日志工具
因为数据库增删改突然暴增,需要查询是那些表的操作特别频繁,写了一个用来分析bin-log的小工具,找出增删改查的表,并按照操作次数降序排列,以下是代码: 1 2 3 4 5 6 7 8 9 10 11 ...
- Android搭建junit测环境
在AndroidManifest.xml文件中增加两个东西,分别是: 1.uses-library ,位于application里面. 2.instrumentation,与application同级 ...