一、基本概念和介绍

数据持久化的概念

数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。例如,文件的存储、数据的读取等都是数据持久化操作。数据模型可以是任何数据结构或对象模型、XML、二进制流等。

当我们编写应用程序操作数据库,对表数据进行增删改查的操作的时候就是数据持久化的操作。

Mybatis框架简介

MyBatis框架是一个开源的数据持久层框架。它的内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件当中,实现SQL的灵活配置。这样做的好处是将SQL与程序代码分离,可以在不修改代码的情况下,直接在配置文件当中修改SQL。

ORM

ORM(Object/Relational Mapping)即对象关系映射,是一种数据持久化技术。它在对象模型和关系型数据库直接建立起对应关系,并且提供一种机制,通过JavaBean对象去操作数据库表的数据,如下图。

在我们实际的开发当中,我们使用对象的技术操作数据库,而当存储数据时,使用的却是关系型数据库,这样造成了很多的不便。ORM在对象模型和关系型数据库的表之间建立了一座桥梁。有了ORM,我们就不用再使用SQL语句操作数据库中的表,使用API直接操作JavaBean对象就可以实现数据的增删改查等的操作。MyBatis通过简单的XML或者注解的方式进行配置和原始映射,将实体类和SQL语句之间建立映射关系,是一种半自动(之所以说是半自动,因为我们要自己写SQL)的ORM实现。


二、MyBatis框架的优缺点及其适用的场合*

MyBatis的优点

(1)与JDBC相比,减少了50%以上的代码量。

(2)MyBatis是嘴加单的持久层框架,小巧并且简单易学。

(3)MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML文件里,从程序代码中彻底分离,降低耦合度,便于统一的管理和优化,并可重用。

(4)提供XML标签,支持编写动态的SQL,满足不同的业务需求。

(5)提供映射标签,支持对象与数据库的ORM字段关系映射。

MyBatis的缺点

(1)SQL语句的编写工作量较大,对开发人员编写SQL的能力有一定的要求。

(2)SQL语句依赖于数据库,导致数据库不具有好的移植性,不可以随便更换数据库。

MyBatis框架的适用场合

MyBatis专注于SQL自身,是一个足够灵活的DAO层解决方案。对性能的要求很高,或者需求变化较多的项目,例如Web项目,那么MyBatis是不二的选择。


三、实操(简单例子)

目的:通过MyBatis实现对我数据库中已经存在的表进行操作,包括向表中插入、修改、查询和删除数据。

1.准备数据库和表

create database if not exists my_test charset utf8;#创建数据库my_testuse my_test; #使用数据库`create table student(Id int primary key auto_increment,Name varchar(20),Age int,Gender char(10)); #创建表student

可以看到现在数据库中已经有表student了,但是表示空的。

2.下载MyBatis需要的jar文件

通过github下载,下载地址是 https://github.com/mybatis/mybatis-3/releases,我选择的是3.4.5的版本,注意要根据自己的jdk来选择,可能高版本的不符合。

下载mysql数据库驱动jar文件,下载地址是 http://central.maven.org/maven2/mysql/mysql-connector-java

3.在Eclipse中新建JavaWeb项目,在lib目录下导入下载好的jar

4.创建MyBatis的核心配置文件,mybatis-config.xml,内容如下。其中mysql.properties 文件是引入的,在该文件内配置的是数据库相关的信息,包括数据库驱动、链接数据库的url、数据库用户名和密码。

<?xml version="1.0" encoding="UTF-8"?>

接着,配置 mysql.properties文件,内容如下

Driver=com.mysql.jdbc.DriverUrl=jdbc:mysql:///my_test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=falseUsername=rootPassword=root

5.定义实体类,这里的变量和数据库的字段是相对应的,以及生成有参构造方法

package com.ydy.entiy;import java.io.Serializable;public class Student implements Serializable{  /** *  */ private static final long serialVersionUID = 1L; private int Id; private String Name; private int Age; private String Gender; public Student(String name, int age, String gender) { super(); Name = name; Age = age; Gender = gender; } public Student(int id, String name, int age, String gender) { super(); Id = id; Name = name; Age = age; Gender = gender; } public String toString() { return "Student [Id=" + Id + 

mybatis 存储过程 tmp_count_MyBatis框架介绍及实战操作相关推荐

  1. mybatis 存储过程 tmp_count_MyBatis从入门到精通

    MyBatis是一款优秀的持久层框架,它支持定制化SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis可以使用简单的 XML或注解 ...

  2. 1. MyBatis框架介绍

    1. MyBatis框架介绍 1. 框架概述 程序开发中框架(framework)往往是对常见功能的封装,可以把框架理解为软件的设计规范或者标准化的组件,好比机械中的螺丝螺母等标准的机械部件 假如你要 ...

  3. 视频教程-spring+springMVC+mybatis(ssm框架)在线考试系统实战开发教程-Java

    spring+springMVC+mybatis(ssm框架)在线考试系统实战开发教程 软件工程硕士毕业,目前就职于上海电信研究院,有三年Java开发经验,五年PHP开发经验. 李礼强 ¥368.00 ...

  4. ❤️六万字《SpringMVC框架介绍—从入门到高级》(建议收藏)❤️

    <SpringMVC框架介绍>(建议收藏) ❤️希望博友给个三连+关注!!! SSM: mybatis + Spring + SpringMVC MVC三层架构 SpringMVC + V ...

  5. python爬虫scrapy框架教程_Python爬虫教程-30-Scrapy 爬虫框架介绍

    从本篇开始学习 Scrapy 爬虫框架 Python爬虫教程-30-Scrapy 爬虫框架介绍 框架:框架就是对于相同的相似的部分,代码做到不出错,而我们就可以将注意力放到我们自己的部分了 常见爬虫框 ...

  6. 2019年上半年收集到的人工智能开源框架介绍文章

    2019年上半年收集到的人工智能开源框架介绍文章 TensorFlow基本使用 TensorFlow.js:让你在浏览器中也能玩转机器学习 人工智能学习框架TensorFlow渐近分析 TensorF ...

  7. ESFramework网络通信框架介绍之(2)――网络通信消息NetMessage

    ESFramework网络通信框架与元数据 较之C++而言,.NET是一个更加"动态"的平台,其动态能力建立在反射机制之上,而反射的基础是"元数据". 上文已经 ...

  8. dommel mysql_.Net Core AA.FrameWork应用框架介绍

    开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架AA.FrameWork,也算是回馈社区,做出一点点贡献,希望能够帮助类似当年入行的我. AA.FrameWork ...

  9. Foundation框架介绍

    Foundation框架介绍 前言 在开发初期,个人发现开发主要涉及到这几个方面:语言语法使用.UIKit.Foundation, 语言是开发基础,UIkit主要负责用户界面设计,其他最常用的就是Fo ...

最新文章

  1. CSS解决高度自适应问题
  2. Deep Learning(深度学习)学习笔记整理系列之(二)
  3. UVa11039 Building designing(贪心算法)
  4. python 实例变量_Python的类变量和实例变量详解
  5. 代码的坏味道之一——译自《重构》
  6. jQuery文档就绪
  7. 回顾一下Unix哲学
  8. Lifetime of Objects
  9. python如何写代码_如何写出优雅的Python代码?
  10. 今天,强行打个广告!
  11. 计算机二级c语言作弊技巧,计算机等级考试二级C语言题型分析与应试技巧
  12. FastReport添加Sqlite数据源
  13. linux添加phoenix引导,Phoenix OS安装方法
  14. PPT设置自动生成页码
  15. ERWIN中的一对多标识关系和一对多非标识关系
  16. 下载stm32f10x标准外设库
  17. 服务器正在维护中是什么意思王者,王者荣耀服务器正在维护中怎么回事 7月4日王者荣耀进不去解决办法...
  18. jQuery新手入门
  19. 计算机如何删除用不到的打印机驱动程序,打印机驱动不能删除怎么办 打印机驱动无法删除的解决方法...
  20. 声卡内录——概念简记

热门文章

  1. 前端可视化开发-编辑器
  2. WebAssembly 的 Wasmer JNI
  3. java堆排序图解_108-堆排序的思路图解_清华毕业老程序员亲授通俗易懂的Java数据结构和算法​​​​教程_Java视频-51CTO学院...
  4. 察看无限网络linux,linux 无线网络调试
  5. 关于抢红包的_关于抢红包现象的材料作文
  6. uni-app发布为H5页面白屏问题
  7. php 函数频率,这是一些使用频率比较高的php函数……
  8. 理发师问题报告java_操作系统-理发师问题的java模拟
  9. linux下的文档处理及tar命令
  10. 二进制安装kubernetes v1.11.2 (第十章 kube-scheduler集群部署)