文档章节

个人总结Mybatis

ZGXQ
 ZGXQ
发布于 2017/02/12 08:23
字数 1200
阅读 11
收藏 0

1、什么mybatis

mybatis是apache的一个持久层框架, mybatis之前叫做ibatis, 后来代码迁移到google code上, 现在代码在github上

2、mybatis的作用

操作数据库完成增删改查

3、Mybatis解决jdbc编程的问题

1、 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。

解决:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接。

2、 Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。

解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。

3、 向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。

解决:Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的类型。

4、 对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。

解决:Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型。

4、传入参数类型使用parameterType指定

返回结果集类型使用resultType指定,使用resultType叫做自动映射, 会将表中列名对应到pojo的属性中,必须要求表中的列名和pojo中的属性名称一致

5、mybatis与hibernate不同

Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。

 

Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量大。

 

Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。

总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软件架构都是好架构,所以框架只有适合才是最好。 

 

1、id:sql语句的唯一标识

parameterType: 指定传入参数类型

resultType:指定返回值类型

#{}占位符, 起到占位的作用, 如果传入的参数类型为简单类型(String, double, long, boolean,integer等), 那么#{}中的变量名称可以随便写

如果查询结果返回集合, 那么可以调用selectList方法, selectList方法返回的结果就是一个集合, 那么mybatis不知道里面的泛型是什么,

所以需要配置泛型的类型

${}拼接符, 作用是字符串原样拼接, 如果传入的参数是简单类型(String, double, long, boolean,integer等),那么${}中的变量名称必须是value

注意: 如果使用${}拼接符有可能造成sql注入的风险

#{}占位符, 如果传入参数为pojo类型, 那么#{}中的变量名称就是pojo中的属性.属性.属性.....

 

#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。

 

${}表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。

© 著作权归作者所有

共有 人打赏支持
下一篇: SpringMvc
ZGXQ
粉丝 1
博文 3
码字总数 2745
作品 0
石家庄
私信 提问
各位学过Mybatis的前辈们,菜鸟求教,请求戳入指点!!

MyBatis较Hibernate的好处: ①可以使用sql语句,查询更灵活 ②可以剔除不需要的信息,每次可以指定查询并封装哪些关键字,在某种程度上节省了内存空间 ③响应速度比Hibernate快 ④适合用于大...

上帝爱众生
2015/04/01
282
5
基于SpringBoot构建个人博客

最近心血来潮,想与大家分享一下SpringBoot应用实战,以一个简单的博客项目来带领大家使用SpringBoot,让大家体会SpringBoot的简单。 本系列视频总共分为8节,会手把手教大家写一个博客系统,...

水门_
2017/12/18
0
0
ssm 框架总结

用 ssm 为框架做了一个系统的后台,今天做一下关于 ssm 的总结。 一、Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-...

什么都不懂的小石
2018/01/01
0
0
noteless的博客导航页 所有文章的导航页面

导航 《spring springmvc mybatis maven 项目整合示例系列-导航页》 《JAVA 基础知识点拾遗系列 JAVA学习 -1层 导航页》 《计算机软硬件发展系列个人理解与总结-导航页》...

noteless
2018/06/29
0
0
Mybatis一级缓存、二级缓存

以下内容来自美团技术博客:聊聊MyBatis缓存机制 前言 MyBatis是常见的Java数据库访问层框架。在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足...

为了美好的明天
2018/05/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《1984》读后感作文4000字

《1984》读后感作文4000字: 新年的第一天,开始阅读Gorge Owell的政治寓言小说。以前阅读的是上译的董乐山的译本,也拜读过刘绍铭的译本,两人在翻译上各有千秋。董先生的译本显得有些压抑严...

原创小博客
21分钟前
2
0
Django集成Markdown编辑器【附源码】

专注内容写作的你一定不要错过markdown 简单介绍 markdown是一种标记语言,通过简单的标记语法可以使普通的文本内容具有一定的格式,使用非常简单,学习成本极低 目前各大Blog平台都已支持m...

运维咖啡吧
39分钟前
1
0
C++中虚函数的作用是什么?它应该怎么用呢?

C++中虚函数的作用: 1、简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。 2、实现多态性,多态性是将接口与实现进行分离。 3、当基类指针指向一个子类对象,通过这个指针调用子类...

天王盖地虎626
43分钟前
1
0
简单聊聊Linux学习经历

学习,是我们一生中都规避不了的一个话题,人的一生中都是在不断的学习,无论是功成名就的人士,还是一无是处的小混混,始终都处在一个不断学习的环境中,只是学习的内容千差万别,有的人是为...

linuxprobe16
44分钟前
3
0
面试之ssm粗略简答

说实在的,spring源码对我来说可能就是报错的时候会一个个点进去找错误源头,其他都是为了让自己学习大神们优秀的编程思想和理念(顺便面试的时候吹吹牛皮~) 这次zhjj就直接抛了一个范围很...

无极之岚
49分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部