(一)初识mybatis
Mybatis
是现在很多公司都选择使用的一个ORM(Object Relational Mapping)框架,所以是值得了解和学习一番的。
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。(来自官方文档)
解释下上面这段话:
1.支持定制话SQL说明,使用mybatis程序员可以自己写sql语句,可以更好的优化SQL语句,相对Hibernate对sql的优化更方便.
2. 支持存储过程,就是在mybatis配置文件中进行了配置,在Java中就可以很方便的调用存储过程,如下配置,在Java中调用这个statement的id就可以调用到配置中的存储过程:
<insert id="CALL_INSERT_T_USER" parameterMap="insertParamterMap" statementType="CALLABLE">
{call test.adduser(?, ?, ?, ?, ?)}
</insert>
3. 高级映射就是相应的输入输出映射.
4. 避免JDBC的所有手动操作,即设置好对应的输入输出参数,就会返回相对应的设定对象 ; 并且框架处理了连接池,以及statement,结果集的的关闭.
5. 对配置和元素map使用简单的xml配置,下面举个例子:
a. 配置的statement
<insert id="INSERT_TABLE_T_USER">
insert into
t_user(name,age,sex,address)
values(#{name},#{age},#{sex},#{address})
</insert>
b. Java中的调用代码:
@Test
public void testMapParamert() {
Map<String, String> param = new HashMap<String, String>();
param.put("name", "zhangsan");
param.put("age", "18");
param.put("sex", "male");
param.put("address", "sichuanchengdu");
param.put("phone", "110"); SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.insert("INSERT_TABLE_T_USER", param);
sqlSession.commit();
}
这样直接设置参数到map集合中,map中的K值和配置文件中写的参数名相对应,就可以将相应的值设置进去; (我在工作中用的ibatis是这样用的 , 回来试了下mybatis也是支持的,不过一般其他公司不这样使用).
常用的ORM框架
市面上常用的ORM框架,有Entity EJB、Hibernate、IBATIS、TopLink、OJB 还有 Spring中的JdbcTemplate 等, 据我见过或者面试过的公司中基本都是Hibernate和mybatis,遇到过两家公司会使用的是spring的JdbcTemplate.
我在工作学习中主要用到和了解过的就orm框架是Hibernate和mybatis,现在简单的对比下两者:
mybatis:专注是sql本身,需要程序员自己编写sql语句,sql修改、优化比较方便。
是一个不完全 的ORM框架,虽然程序员自己写sql,mybatis 也可以实现映射(输入映射、输出映射)。
应用场景:适用与需求变化较多的项目,比如:互联网项目。
hibernate:是一个标准ORM框架(对象关系映射)。入门门槛较高的,不需要程序写sql,sql语句自动生成了。
对sql语句进行优化、修改比较困难的。
应用场景:适用与需求变化不多的中小型项目,比如:后台管理系统,erp、orm、oa等. (来自某培训单位老师)
spring的JdbcTemplate: 使用模板设计模式设计的一套操作数据的库的Jdbc工具类 , 由程序员来写sql以及输入输出参数进行映射,封装了获取数据库连接关闭资源等功能,以前大概看过现在都忘记了,后续有时间进行补充.
上面大概介绍了下mybatis是什么以及一些相关的东西,中间还夹杂了一些代码,如果没了解过mybatis的可以跳过其中的代码 , 学习了解过mybatis在来看上述代码(因为只做简单介绍所以代码中省略了一些次要的东西) .
(一)初识mybatis的更多相关文章
- 初识mybatis(二)
上篇博客我们介绍通过Java代码来创建mybatis的配置文件,港真,这种方式看起来有意思实际在开发中用的并不多,mybatis的配置还是以xml配置为主,本文我们就来看看如何通过xml文件来配置my ...
- mybatis入门--初识mybatis
初识mybatis 今天,一起来说说mybits这个框架吧.这是一个持久层的框架.之前叫做ibatis.所以,在它的代码中出现ibatis这个词的时候,不要感到惊讶.不是写错了,它确实就是这个样子的. ...
- MyBatis For .NET学习- 初识MyBatis
MyBatis的框架. Introduction MyBatis本是apache的一个开源项目iBatis,2010年这个项目由 apache software foundation迁移到了googl ...
- 初识Mybatis之工程搭建
简介:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 ...
- MyBatis学习01(初识MyBatis和CRUD操作实现)
1.初识MyBatis 环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 什么是M ...
- 初识Mybatis框架,实现增删改查等操作(动态拼接和动态修改)
此第一次接触Mybatis框架确实是有点不适应,特别是刚从Hibernate框架转转型过来,那么为什么要使用Mybatis框架,Mybatis框架和Hibernate框架又有什么异同呢? 这个问题在我 ...
- 初识MyBatis
ORM:对象关系映射,它只是一种规则. 像MyBatis,Hibernate对jdbc进行了封装. 第一章 回顾JDBC开发 1.优点:简单易学,上手快,非常灵活构建SQL(自己写的),效率高.2.缺 ...
- 初识Mybatis框架,实现增删改查等操作
此第一次接触Mybatis框架确实是有点不适应,特别是刚从Hibernate框架转转型过来,那么为什么要使用Mybatis框架,Mybatis框架和Hibernate框架又有什么异同呢? 这个问题在我 ...
- Mybatis基础学习(一)—初识MyBatis
一.MyBatis是什么? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google co ...
随机推荐
- Python基础学习-'module' object has no attribute 'urlopen'解决方法
import numpy as npimport urlliburl = "http://archive.ics.uci.edu/ml/machine-learning-databases/ ...
- 开始你的第一个npm脚本工具
在实际开发中,一般刚开始一个项目或者刚接手一个项目,我们会运行 npm install 下载安装所有依赖, 在实际开发中,可能也会使用各种命令行-- 来提高我们开发的效率. 与它相处了这么久,你真的了 ...
- ES 入门之一 安装ElasticSearcha
安装ElasticSearcha 学习ES也有快一个月了,但是学习的时候一直没有总结.以前没有总结是因为感觉不会的很多,现在对ES有一点了解了.索性就从头从安装到使用ES做一个详细的总结,也分享给其他 ...
- HTML的iframe标签妙用 - 在线执行前端代码的网站原理是什么?
在我自己的日常前端开发中,其实iframe标签出现的次数并不是很多.作为一个很古老(浏览器兼容性非常好)的标签,有必要去了解一下它的典型应用场景. (图片说明:所有浏览器都支持iframe,无论什么版 ...
- var a=function(){...}与function a(){...}的区别
var a = function(){...}在js预加载时按变量处理,即预加载定义,不加载赋值. function a(){...}即加载定义,而且赋值. 例如:a(); //正常执行a()函数; ...
- 当final作用于变量、参数、方法和类时该如何处理
final变量: 对于基本类型使用final:它就是一个常量,数值恒定不变 对于对象引用使用final:使得引用恒定不变,一旦引用被初始化指向一个对象,就无法再把 它改为指向另一个对象.然而,对象自身 ...
- 守护进程VS守护线程
守护(daemon)进程 引入: join()方法可以使一个进程运行完之后再执行下一个进程,而daemon()方法就是主进程的代码执行完毕之后,不需要等待子进程,立即终止子进程. join()方法和d ...
- 大白话Vue源码系列(01):万事开头难
阅读目录 Vue 的源码目录结构 预备知识 先捡软的捏 Angular 是 Google 亲儿子,React 是 Facebook 小正太,那咱为啥偏偏选择了 Vue 下手,一句话,Vue 是咱见过的 ...
- NOIP2017普及组解题报告
刚参加完NOIP2017普及,只考了210,于是心生不爽,写下了这篇解题报告...(逃 第一次写博,望dalao们多多指导啊(膜 第一题score,学完helloworld的人也应该都会吧,之前好多人 ...
- Java开发小技巧(一)
前言 相信许多程序员在看别人写的代码的时候,会有怀疑人生的感想,面对一堆天书一样的代码,很难摸清作者的思路,最后选择了重构,如果你认同上面这个作法,说明了两个问题:要么原来的开发者技术菜.要么你技术菜 ...