mybatis 存储过程 tmp_count_MyBatis框架介绍及实战操作
一、基本概念和介绍
数据持久化的概念
数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。例如,文件的存储、数据的读取等都是数据持久化操作。数据模型可以是任何数据结构或对象模型、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框架介绍及实战操作相关推荐
- mybatis 存储过程 tmp_count_MyBatis从入门到精通
MyBatis是一款优秀的持久层框架,它支持定制化SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis可以使用简单的 XML或注解 ...
- 1. MyBatis框架介绍
1. MyBatis框架介绍 1. 框架概述 程序开发中框架(framework)往往是对常见功能的封装,可以把框架理解为软件的设计规范或者标准化的组件,好比机械中的螺丝螺母等标准的机械部件 假如你要 ...
- 视频教程-spring+springMVC+mybatis(ssm框架)在线考试系统实战开发教程-Java
spring+springMVC+mybatis(ssm框架)在线考试系统实战开发教程 软件工程硕士毕业,目前就职于上海电信研究院,有三年Java开发经验,五年PHP开发经验. 李礼强 ¥368.00 ...
- ❤️六万字《SpringMVC框架介绍—从入门到高级》(建议收藏)❤️
<SpringMVC框架介绍>(建议收藏) ❤️希望博友给个三连+关注!!! SSM: mybatis + Spring + SpringMVC MVC三层架构 SpringMVC + V ...
- python爬虫scrapy框架教程_Python爬虫教程-30-Scrapy 爬虫框架介绍
从本篇开始学习 Scrapy 爬虫框架 Python爬虫教程-30-Scrapy 爬虫框架介绍 框架:框架就是对于相同的相似的部分,代码做到不出错,而我们就可以将注意力放到我们自己的部分了 常见爬虫框 ...
- 2019年上半年收集到的人工智能开源框架介绍文章
2019年上半年收集到的人工智能开源框架介绍文章 TensorFlow基本使用 TensorFlow.js:让你在浏览器中也能玩转机器学习 人工智能学习框架TensorFlow渐近分析 TensorF ...
- ESFramework网络通信框架介绍之(2)――网络通信消息NetMessage
ESFramework网络通信框架与元数据 较之C++而言,.NET是一个更加"动态"的平台,其动态能力建立在反射机制之上,而反射的基础是"元数据". 上文已经 ...
- dommel mysql_.Net Core AA.FrameWork应用框架介绍
开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架AA.FrameWork,也算是回馈社区,做出一点点贡献,希望能够帮助类似当年入行的我. AA.FrameWork ...
- Foundation框架介绍
Foundation框架介绍 前言 在开发初期,个人发现开发主要涉及到这几个方面:语言语法使用.UIKit.Foundation, 语言是开发基础,UIkit主要负责用户界面设计,其他最常用的就是Fo ...
最新文章
- CSS解决高度自适应问题
- Deep Learning(深度学习)学习笔记整理系列之(二)
- UVa11039 Building designing(贪心算法)
- python 实例变量_Python的类变量和实例变量详解
- 代码的坏味道之一——译自《重构》
- jQuery文档就绪
- 回顾一下Unix哲学
- Lifetime of Objects
- python如何写代码_如何写出优雅的Python代码?
- 今天,强行打个广告!
- 计算机二级c语言作弊技巧,计算机等级考试二级C语言题型分析与应试技巧
- FastReport添加Sqlite数据源
- linux添加phoenix引导,Phoenix OS安装方法
- PPT设置自动生成页码
- ERWIN中的一对多标识关系和一对多非标识关系
- 下载stm32f10x标准外设库
- 服务器正在维护中是什么意思王者,王者荣耀服务器正在维护中怎么回事 7月4日王者荣耀进不去解决办法...
- jQuery新手入门
- 计算机如何删除用不到的打印机驱动程序,打印机驱动不能删除怎么办 打印机驱动无法删除的解决方法...
- 声卡内录——概念简记
热门文章
- 前端可视化开发-编辑器
- WebAssembly 的 Wasmer JNI
- java堆排序图解_108-堆排序的思路图解_清华毕业老程序员亲授通俗易懂的Java数据结构和算法​​​​教程_Java视频-51CTO学院...
- 察看无限网络linux,linux 无线网络调试
- 关于抢红包的_关于抢红包现象的材料作文
- uni-app发布为H5页面白屏问题
- php 函数频率,这是一些使用频率比较高的php函数……
- 理发师问题报告java_操作系统-理发师问题的java模拟
- linux下的文档处理及tar命令
- 二进制安装kubernetes v1.11.2 (第十章 kube-scheduler集群部署)