什么是 MyBatis ?

MyBatis 是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

MyBatis如何安装?

要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。

如果使用 Maven 来构建项目,则需将下面的 dependency 代码置于 pom.xml 文件中:org.mybatismybatisx.x.x

MyBatis的功能架构:

我们把Mybatis的功能架构分为三层:

API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。

数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。

基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。

MyBatis的优缺点

优点:

简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。

解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

提供映射标签,支持对象与数据库的orm字段关系映射

提供对象关系映射标签,支持对象关系组建维护

提供xml标签,支持编写动态sql。

缺点:

编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。

SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。

框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

二级缓存机制不佳

在线阅读:

mybatis mysql net教程_MyBatis 教程相关推荐

  1. mybatis mysql 中文乱码_Mybatis + Mysql 插入数据时中文乱码问题

    近日跟朋友一起建立一个项目,用的是spring+mybatis+mysql. 今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下. 对于数据库操作中出现的中文乱 ...

  2. mybatis mysql 分表_Mybatis的分表实战

    前言: 以前写代码, 关于mysql的分库分表已被中间件服务所支持, 业务代码涉及的sql已规避了这块. 它对扩展友好, 你也不知道到底他分为多少库, 多少表, 一切都是透明的. 不过对于小的团队/工 ...

  3. mybatis mysql 树形结构_Mybatis查询树形结构数据

    数据表的设计 创建数据表 对于树形结构的数据库设计通常是基于继承关系设计的,也就是通过父ID关联来实现的. 一张树形结构的数据表基本的三个字段:id(自己).name(名称)和parentid(父类编 ...

  4. mybatis mysql 模糊查询语句_mybatis模糊查询语句及注意事项

    select count(*) from t_user loginacct like concat("%",#{queryText},"%") 1.动态查询语句 ...

  5. mybatis mysql 模糊查询_MyBatis Oracle、MySQL、DB2、SQLServer的like模糊查询

    Oracle数据库: select * from t_user where name like '%'||#{search_name}||'%' 或者 select * from t_user whe ...

  6. mybatis mysql 模糊查询语句_mybatis+Spring mysql的模糊查询问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 查询的mapping.xml语法 resultType="java.lang.Integer"> SELECT count(yy ...

  7. mybatis mysql 中文乱码_mybatis连接mysql数据库插入中文乱码

    对于mysql数据库的乱码问题,有两中情况: 1. mysql数据库编码问题(建库时设定). 2. 连接mysql数据库的url编码设置问题. 对于第一个问题,目前个人发现只能通过重新建库解决,建库的 ...

  8. [Shiro教程] Shiro 教程基于SSM(SpringMVC + Spring + Mybatis)EHCache版本

    一.Shiro简介 Apache Shiro 是 Java  的一个安全框架.我们经常看到它被拿来和 Spring  的 Security  来对比.大部分人认为 Shiro  比 Security  ...

  9. [Shiro教程] Shiro 教程基于SSM(SpringMVC + Spring + Mybatis)

    一.Shiro简介 Apache Shiro 是 Java  的一个安全框架.我们经常看到它被拿来和 Spring  的 Security  来对比.大部分人认为 Shiro  比 Security  ...

  10. mysql数据库解压安装教程_MySQL数据库之windows 10下解压版MySql安装配置方法教程...

    本文主要向大家介绍了MySQL数据库之windows 10下解压版MySql安装配置方法教程 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. windows 10 下安装解压版的 ...

最新文章

  1. 基于网格的聚类算法STING
  2. Linux下批量重命名文件名为数字索引编号(0~N.xxx)的方法
  3. 使用实体框架、Dapper和Chain的仓储模式实现策略
  4. 设置远程访问mysql服务端的日志
  5. 浅谈游戏单位属性模块设计:属性组成、分级、计算与同步
  6. JS事件及其兼容用法
  7. 线程的三种创建方式以及代码实现
  8. python123可以复制粘贴吗_使用win32com和python复制和粘贴隔离
  9. ERP流程入门_从会计分录理解企业基本流程[转]
  10. java的制造商,国内某通信设备制造商JavaEE开发岗面试题
  11. oracle 对象的审计,初识!聊聊ORACLE的审计功能
  12. package.json 入门
  13. JavaScript(第二十二天)【动态加载js和css】
  14. 【源码】HashMap源码及线程非安全分析
  15. 如何在Excel表数据中快速创建新增脚本语句(核心:字符串拼接)
  16. [已解决]ubuntu下谷歌浏览器无法上网
  17. python通过线程实现定时器timer的方法
  18. Python之爬虫和数据小解析
  19. linux修改休眠时间设置,centos设置不休眠的方法
  20. 更好的设计接口_陷入更好的设计

热门文章

  1. 废弃qq号大全密码2020_被永久封禁的QQ号解封历程
  2. java开发转测试开发经历
  3. 怎么才能免费下载CSDN资源啊
  4. 佳能g2810打印机扫描怎么用_佳能g2810怎么自动清洗
  5. 学生管理系统功能设计c语言,C语言--学生信息管理系统设计.doc
  6. GJB150A湿热试验-高低温交变湿热试验标准检测报告
  7. java8 64_【java8下载】Java8最新版下载 64位-七喜软件园
  8. 小乌龟Git回滚重置及合并指定提交
  9. yacc语法分析minipascal_用Yacc实现语法分析器-4-编译原理
  10. 手机上可以编程看代码的软件