(一)初识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 ...
随机推荐
- powershell 监控, 重启网卡
#powershell 监控, 重启网卡 一台Windows服务器,由于负荷较大,偶尔会网络中断,就写了个powershell脚本,监控ip是否通,不通就重启网卡 cls $host.UI.RawUI ...
- ML笔记:Gradient Descent
Review: Gradient Descent Tip 1: Tuning your learning rates eta恰好,可以走到局部最小值点; eta太小,走得太慢,也可以走到局部最小值点; ...
- php银联网页支付实现方法
本文实例讲述了php银联网页支付实现方法.分享给大家供大家参考.具体分析如下: 这里介绍的银联WAP支付功能,仅限消费功能. 1. PHP代码如下: 复制代码代码如下: <?phpna ...
- PHP根据传入参数合并多个JS和CSS文件的简单实现
HTML(使用方法): 复制代码代码如下: <link rel="stylesheet" type="text/css" href="cssmi ...
- UWP 显示图片到Image控件
要想显示图片,前提是要有一个空间的啦 <Image x:Name="imageHidden"/> 然后一个响应选择图片得事件,注意使用asynchronous方法哦 F ...
- .NET版支付宝商户会员卡接入
最近公司计划对接支付宝会员卡功能,而任务恰巧由领导安排给我这边,小弟之前也未做过支付宝接口,研究了三天,终于将支付宝会员卡API接口大体上调通了,现将其整理下,以供参考. 蚂蚁金服开发平台-商户会员卡 ...
- CSS中line-height与vertical-align
参考文章: 深入了解CSS的line-height属性 Vertical-Align: 你需要知道的所有事[译] Vertical-Align: All You Need To Know 1.什么是行 ...
- java学习笔记IO之字节输入输出流
IO字节输入输出流 OutputStream:字节输出流 该抽象类是所有字节输出流的超类: 定义了一些共性的成员方法: 1.写入一个字节 void write(int b);//b表示字节 2.写入字 ...
- python 中Dict 转 Json
近期在公司须要写个小工具.运用到的python,然后须要将Dict转成Json. 之前遇到转换Json失败,然后以为复杂的Entity结构.不能用Json的库Json.dump().进行转换. 自己些 ...
- C++11新特性应用--介绍几个新增的便利算法(不更改容器中元素顺序的算法)
总所周知.C++ STL中有个头文件,名为algorithm.即算法的意思. The header<algorithm>defines a collection of functions ...