mybatis(非常详细的哦~~~~)
备注:ibatis 迁入google code 更名为Mybatis
官方文档:http://mybatis.org/mybatis-3/
比较好的教程推荐:http://www.blogjava.net/davidjefiny/archive/2013/12/22/Mybatis.html
Mybaits介绍
Mybatis是一个持久层(ORM)框架,把实体类和POJO之间建立了映射关系,是半自动的ORM实现。
Mybatis 优点:
【1】基于SQL语法,简单易学
【2】能了解底层的组装过程
【3】SQL语句的封装在XML配置文件,便于统一管理和维护,降低了程序的耦合度
【4】程序调试方便
Mybaits基本要素:
【1】configuration.xml 全局配置文件
【2】mapper.xml 核心映射文件
【3】SqlSession 接口
基础配置文件configuration.xml
configuration.xml是系统的核心配置文件,包含数据源和事务管理等设置和属性信息,Xml文档结构如下:
configuration 配置
properties 可以配置在Java属性配置文件中
settings 修改Mybatis在运行时的行为方式
typeAliases 为Java类型命名一个较短的名字
TypeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境
environment 环境变量
transactionManager 事务控制器
dataSource 数据源
mappers 映射器
事务管理:
Mybatis支持两种事务管理类型:
JDBC->利用JDBC的提交和回滚功能,利用连接的数据源来管理事务的作用域。
MANAGED-> 这个类型什么都不做,不提交、不回滚 、不关闭连接。而是让窗口来管理事务的全部生命周期(比如Spring或者J2EE服务器)。
数据源:
数据源有三种:UNPOOLED POOLED JNDI
UNPOOLED 这个数据源实现在每次请求的时候简单的打开和关闭一个连接。虽说有点慢,但是一些不需要性能和立即响应的应用来说,是一种选择。
POOLED 数据源缓存JDBC连接独享用于避免每次都要打开连接和生成连接对象需要的验证时间。对于高并发Web,一般采用这种方法。
JNDI 这种数据源是为了和Spring或者应用服务一起使用,可以在外部也可以内部配置这个数据源,然后在JNDI上下文中引用它。
SQL映射文件:
【1】相对路径:
<mappers>
<mapper resource=""org/mybatis/builder/UserManager.xml></mapper>
</mappers>
【2】全路径:
<mappers>
<mapper url="file:///var/sqlmaps/AuthorMapper.xml"></mapper>
</mappers>
SQL映射文件:
SQL映射文件结构:
cache --- 配置命名空间的缓存。
cache-ref ---- 从其他命名空间引用缓存配置。
resultMap --- 最复杂 最给力的元素 用来描述如何从结果集中加载对象
sql --- 重用的SQL 块,可以被其他语句引用。
insert update delete select
Insert
主键策略:如果表中有自动增长得主键,可以设置 useGeneratedKeys = "true" keyProperty="主键"
动态SQL:
Mybatis强大功能之一就是动态SQL能力
if
choose(when otherwise)
trim(where set )
foreach
SQL映射文件:
SQL 这个元素定义一个可以复用的SQL语句片段,供其他语句调用。
比如:
<sql id="userColumns">id,username,passwd</sql>
<select id="selectUser" parameterType="int" resultType="hashmap"> select <include refid="userColumns"/> from _table where id=#{id} </select>
动态SQL:
缓存---cache:缓存技术是一种“以空间换时间”的设计理念,利用内存空间资源来提高数据检索速度的有效手段之一。
Mybaits 默认情况是没有开启缓存的,除了局部的session缓存。需要开启二级缓存,需要在SQL映射文件添加一行
<cache />
比如:<cache eviction = "FIFO" flushInverval = "6000" size = "512" readOnly = ""true>
SqlSessionFactoryBuilder:一旦创建,SqlSessionFactory 就会在应用程序中始终存在。所以没有理由去销毁和再创建,一个应用程序也不建议多次创建SqlSessionFactory。所以作用域做好事Application。可以有很多实现方式:最好就是单例模式或者静态单例模式。但是这种并不被赞成和好用的,反而使用Google Guice 或则Spring来进行依赖反射会更好。允许生成管理器SqlSessionFactory的单例生命周期。
SqlSession 生命周期:
SQLSession 每个线程都有自己的SqlSession实例,SqlSession实例是不能被共享,也不是线程安全的。最好使用Request作用域或者方法体作用域。如果使用Web框架,应该让SqlSession更随HTTP请求的相似作用域。也就是说,在收到一个HTTP请求过后,打开SqlSession,等返回一个回应后,立马关掉Sqlsession。关闭SqlSession非常重要的,,下面是标准的方式关闭:
SqlSession session = sqlSessionFactory.openSession();
try{
//TODO:
}
finally{ session.close(); }
SqlSesson接口:
SqlSession获取方式:
Reader reader = Resources.getResourceAsReader("configuration.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
SqlSession的使用:
调用insert update selectList selectOne delete 等方法执行增删改查等操作。
提取SQL的方法:
Configuration configuration = sqlSession.getConfiguration();
MappedStatement mStatement = configuration.getMappedStatement(sqlid);
BoundSql boundSql = mStatement.getBoundSql(Param);
String sql = boundSql.getSql();
可以用于自定义打印日志
分页方法:
mybatis(非常详细的哦~~~~)的更多相关文章
- (转)springMVC+mybatis+ehcache详细配置
一. Mybatis+Ehcache配置 为了提高MyBatis的性能,有时候我们需要加入缓存支持,目前用的比较多的缓存莫过于ehcache缓存了,ehcache性能强大,而且位各种应用都提供了解决方 ...
- SpringBoot整合Mybatis完整详细版二:注册、登录、拦截器配置
接着上个章节来,上章节搭建好框架,并且测试也在页面取到数据.接下来实现web端,实现前后端交互,在前台进行注册登录以及后端拦截器配置.实现简单的未登录拦截跳转到登录页面 上一节传送门:SpringBo ...
- SpringBoot整合Mybatis完整详细版
记得刚接触SpringBoot时,大吃一惊,世界上居然还有这么省事的框架,立马感叹:SpringBoot是世界上最好的框架.哈哈! 当初跟着教程练习搭建了一个框架,传送门:spring boot + ...
- uploadify在火狐下上传不了的解决方案,java版(Spring+SpringMVC+MyBatis)详细解决方案
由于技术选型的原因,在一个产品中,我选择了uploadify,选择它的原因是它有完善的技术文档说明(http://www.uploadify.com/documentation/),唯一不足的是 ...
- Mybatis初步详细配置
1.Mybatis所需包 下载地址:https://github.com/mybatis/mybatis-3/releases,其中log4j是日志包,mysql是数据库所需包,需自行下载 2.项目结 ...
- springmvc学习总结(二) -- maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解
@_@ 写在最前 之前分享过下面这几篇: mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)(附demo和搭建过程遇到的问题解决方法) myba ...
- Hibernate和Mybatis区别 详细 有用
1.开发上手难度 hibernate的真正掌握(封装的功能和特性非常多)要比Mybatis来得难. 在真正产品级应用上要用Hibernate,不仅对开发人员的要求高,hibernate往往还不适合(多 ...
- maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解
转自:https://www.cnblogs.com/lmei/p/7190755.html?utm_source=itdadao&utm_medium=referral @_@ 写在最前 之 ...
- 一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)详细教程重要
前言 SSM(Spring+SpringMVC+Mybatis)是目前较为主流的企业级架构方案,不知道大家有没有留意,在我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能:而且在大部分教 ...
- maven+springMVC+mybatis+mysql详细过程
1.工程目录 a.在src/main/java文件夹中,新建包cn.springmvc.model(存放javabean), cn.springmvc.dao(存放spring与mybatis连接接口 ...
随机推荐
- Node.js初接触(一)
本来还在纠结着到底要学哪一种后台语言呢,突然发现node.js很火,既然能被这么多人推崇,自然是有他的优势的.去百度百科看了一眼,或许是我理解能力太差,并没有了解到很多关于node.js的东西,大概就 ...
- 配置标准的 ActiveMQ 组件
简单地说,使用 ActiveMQ 的方式是固定且直接的:启动 ActiveMQ 服务器,发送消息,接收消息.但你并未理解 ActiveMQ 背后运作的详情.在一些要求更高的场景里,需要理解并有能力自定 ...
- SSIS包的组建之连接管理器
上一篇我们通过一个示例来介绍一下SSIS 包的开发.接下来的内容我们将学习一下包中各个选项卡的使用.如:连接管理器选项卡.控制流选项卡.数据流选项卡和事件处理选项卡等等.这一篇将介绍一下连接管理器作用 ...
- Windows Live Writer加载代码着色插件步骤
博客园内置支持SyntaxHighlighter代码着色,代码着色语法:<pre class='brush:编程语言'>代码</pre>. 需要注意的是:如何你使用Syntax ...
- PowerDesigner 学习
1. 创建主键,不能为空,递增列,唯一约束(key 通过唯一索引) 数据库-->根据数据库的改动更新model 或者 根据修改后的model (比如新添加的字段)产生新sql代码 2.powe ...
- Javascript-我对作用链、闭包、原型及原型链的理解
Javascript-基础概念总结(2) 最近学习一些javascript基础知识,也解决了很多之前的疑惑,记得第一次被问及怎样理解闭包时,我的回答是:就是类似于封装吧!现在想想是有多白痴,学习技术是 ...
- python递归中的return"陷阱"
在做一道练习题(参照下篇博文<在当前目录下递归的查找包含指定字符串的文件>)的时候,发现函数中的return的值竟然是None,百思不得其解,尝试化繁为简,用以下的简单的代码验证了一下 问 ...
- 求一些数字字符参数的和(Java)
一.思路 输入数字(字符型)参数: 将字符型强制转化为整数型: 求和: 输出: 二.流程图 三.源程序代码及结果
- 利用HTML5开发Android笔记(中篇)
资源来自于www.mhtml5.com 杨丰盛老师成都场的PPT分享 一个很简明的demo 可以作为入门基础 学习的过程中做了点笔记 整理如下 虽然内容比较简单 但是数量还是比较多的 所以分了3篇 ( ...
- asp.net mvc中model注意事项
1 modelState必须是需要在action Filter中才生效 2 发送接口的json nullable的类型必须初始化