第6章 初识MyBatis
mybatis入门教程
mybatis入门教程MyBatis是一种开源的持久层框架,它可以帮助我们简化数据库操作的过程。
本教程将介绍如何使用MyBatis进行基本的数据访问操作。
第一步:创建数据库和表首先,我们需要创建一个数据库和一个表来存储数据。
假设我们创建了一个名为"mybatis_demo"的数据库,并在其中创建了一个名为"users"的表,该表包含id、name和age三个字段。
第二步:引入MyBatis依赖在使用MyBatis之前,我们需要在项目的pom.xml文件中引入MyBatis的依赖。
可以在Maven仓库中找到最新的MyBatis版本,并将其添加到pom.xml文件中。
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency>第三步:创建数据源配置文件在src/main/resources目录下创建一个名为"mybatis-config.xml"的文件,并在其中配置数据源信息。
以下是一个示例配置:<?xml version="1.0" encoding="UTF-8"?><configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="url"value="jdbc:mysql://localhost:3306/mybatis_demo"/><property name="username" value="root"/></dataSource></environment></environments><mappers><!-- 这里可以配置Mapper接口所在的包 --></mappers></configuration>注意:在实际项目中,我们通常会将数据库连接信息配置在外部的配置文件中,而不是直接写在mybatis-config.xml文件中。
mybatis 知识点
Mybatis 知识点什么是 MybatisMybatis 是一个开源的持久层框架,它提供了一个可以自定义 SQL 映射的方式,以及可以很方便地进行数据库查询和操作的功能。
相比于传统的 ORM 框架,Mybatis 更加灵活,适用于复杂的 SQL 查询和自定义 SQL 语句的情况。
Mybatis 的优点1.灵活性:Mybatis 允许开发者自定义 SQL 映射,可以根据需要编写任意复杂的 SQL 查询语句,更加灵活地操作数据库。
2.性能优化:Mybatis 提供了多种性能优化的手段,比如查询缓存和预编译语句等,可以减少数据库的访问次数,提高系统性能。
3.易于集成:Mybatis 与 Spring 框架完美集成,可以很方便地与 SpringBoot 一起使用,简化开发流程。
Mybatis 的基本使用1. 引入依赖在 Maven 项目的 pom.xml 文件中,添加以下依赖:<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency>2. 配置数据源在 application.properties 文件中配置数据源信息:spring.datasource.url=jdbc:mysql://localhost:3306/mydbername=rootspring.datasource.password=1234563. 创建实体类和 Mapper 接口创建与数据库表对应的实体类和对应的 Mapper 接口,如下所示:public class User {private Long id;private String name;private Integer age;// 省略 getter 和 setter 方法}public interface UserMapper {List<User> getAllUsers();User getUserById(Long id);void addUser(User user);void updateUser(User user);void deleteUser(Long id);}4. 编写 SQL 映射文件在 resources 目录下创建一个 sqlmap 目录,并在该目录下编写 XML 格式的 SQL 映射文件,如下所示:<!-- UserMapper.xml --><mapper namespace="erMapper"><select id="getAllUsers" resultType="er">SELECT * FROM user;</select><select id="getUserById" resultType="er">SELECT * FROM user WHERE id = #{id};</select><insert id="addUser">INSERT INTO user(name, age) VALUES(#{name}, #{age});</insert><update id="updateUser">UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id};</update><delete id="deleteUser">DELETE FROM user WHERE id = #{id};</delete></mapper>5. 配置 Mybatis在 application.properties 文件中配置 Mybatis 相关的配置项,如下所示:mybatis.mapper-locations=classpath*:sqlmap/**/*.xmlmybatis.configuration.map-underscore-to-camel-case=true6. 注入 Mapper在需要使用 Mapper 的地方进行注入,并调用相应的方法即可:@Servicepublic class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic List<User> getAllUsers() {return userMapper.getAllUsers();}// 省略其他方法实现}Mybatis 高级特性动态 SQLMybatis 提供了动态 SQL 的支持,可以根据不同的条件生成不同的 SQL 语句,实现更加灵活的查询。
MyBatis演示文稿
MyBatis的部署
1.导入相应的jar包
2.编写配置文件
3.编写SQL映射文件
MyBatis的持久化操作
(1)获取SqlSession对象
(2)调用相应的API
(3)关闭SQLSession对象
使用动态SQL完成复杂操作
(1)if:实现选择
(2)choose:类似Java中的swቤተ መጻሕፍቲ ባይዱtch
(3)where:条件判断 (4)set:动态更新语句
MyBatis的相关介绍
与Hibernate相比较
(1)相对于MyBatis,Hibernate的内容多,学习难度高 于MyBatis,但MyBatis更接近JDBC的开发,易掌握。 (2)Hibernate的开发者不需要关注SQL语句生成及结果 映射,而MyBatis则需要开发者手动写SQL语句 (3)Hibernate的可移植性高于MyBatis (4)Hibernate的灵活度低于MyBatis,并且执行效率也 低于MyBatis
MyBatis的相关介绍
MyBatis的优缺点
优点:
(1)简单且功能强大,通过SQL映射文件和sqlsession能够实现数据持 久层的功能,与JDBC相比减少了很多的代码量 (2)开发人员可以完全控制所执行的SQL语句,尤其适用于多表查询 (3)容易维护和修改,SQL语句写在配置文件里,只要修改配置文件即 可。 缺点: (1)可移植性差,数据库不同,相应的SQL语句也会发生相应的变化
MyBatis知识点讲解
王渤小组
本章内容
• • • •
MyBatis相关介绍 MyBatis的部署 MyBatis的持久化操作(重要) 使用动态SQL完成复杂操作(重要)
MyBatis的相关介绍
mybatis入门教程-Mybatis简介与原理
【持久化框架】Mybatis简介与原理--夜半什么是Mybatis资料官网:https://mybatis.github.io/mybatis-3/zh/index.html/MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。
MyBatis 提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
MyBatis 是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。
MyBatis 避免了几乎所有的JDBC 代码和手工设置参数以及抽取结果集。
MyBatis使用简单的XML 或注解来配置和映射基本体,将接口和Java 的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
1、mybatis ibatis2、主要是做数据库操作,使用java操作数据库,dao[持久化]技术知识点1、概念2、基本CRUD标签3、动态sql4、一对多,多对一关系5、了解注解式配置学习内容1、理解什么是mybatis,以及mybatis的应用场景2、使用mybatis开发demo3、熟悉mybatis的配置文件,以后spring的时候,没有用。
4、会使用mybatis实现简单增删改查①Insert delete update select 标签使用ORM对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。
从效果上说,它其实是创建了一个可在编程语言里使用的--“虚拟对象数据库”。
《JavaEE企业级应用开发》初识MyBatis框架
1.1.3 当前主流框架
Spring Boot 框架
Spring Boot 框架是 Pivotal 团队基于 Spring 开发的全新框架,其设计初衷是为了简化 Spring 的配置,使用户能够构建独立运行的程序,提高开发效率。
Spring Boot 框架本身并不提供 Spring 框架的核心特性及扩展功能,它只是用于快速、敏 捷地开发新一代基于 Spring 框架的应用,同时它还集成了大量的第三方类库(如Jackson、 JDBC、Redis 等),使用户只需少量配置就能完成相应功能。
1.1.1 框架概述
软件框架
软件框架是一种通用的、可复用的软件环境,它提供特定的功能,促进软件应用、产品和解 决方案的开发工作。软件框架会包含支撑程序、编译器、代码、库、工具集以及API,它把所有这 些部件汇集在一起,以支持项目或系统的开发。
软件框架可以形象地比喻成我们在盖楼房时,用梁+柱子+承重墙搭建起来的钢筋混凝土结构 的建筑框架,它是整个建筑的骨架。而实现的软件功能,也就像在这个建筑框架中所要实现的不同 类型、功能的房子,比如健身房、商场、酒店、饭店等。
1.1.3 当前主流框架
Spring MVC框架
Spring MVC是一个Web开发框架,可以将它理解为Servlet。在MVC模式中,Spring MVC 作为控制器(Controller)用于实现模型与视图的数据交互,是结构最清晰的。
Spring MVC框架采用松耦合、可插拔的组件结构,具有高度可配置性,与其他的MVC框架相 比,具有更强的扩展性和灵活性。
目录/Contents
01
初识框架
02
MyBatis介绍
03
MyBatis环境搭建
MyBatis核心技术全解与项目实战读书笔记
《MyBatis核心技术全解与项目实战》读书笔记1. 第一章 MyBatis简介本章主要介绍了MyBatis的基本概念、特点和优势,以及其在Java企业级应用开发中的重要作用。
MyBatis是一个优秀的持久层框架,它将SQL语句与Java对象映射(POJO)相结合,使得开发人员可以更加方便地操作数据库。
MyBatis的主要目标是简化数据库操作,提高开发效率,同时也提供了良好的数据封装和安全性。
SqlSessionFactory:用于创建SqlSession对象,SqlSession是MyBatis中执行SQL语句的核心接口。
SqlSession:用于执行SQL语句的会话对象,可以通过它来执行增删改查等操作。
Mapper:映射器接口,用于定义SQL语句和Java对象之间的映射关系。
Configuration:MyBatis的全局配置类,用于配置各种属性,如缓存策略、事务管理等。
插件:MyBatis的插件机制,允许开发者自定义拦截器、类型处理器等组件,以实现对MyBatis的功能扩展。
灵活性:MyBatis支持多种存储结构,如JDBC、ODBC、JNDI等,同时还支持自定义类型处理器和插件,使得MyBatis能够满足各种复杂的数据库操作需求。
易用性:MyBatis提供了简洁的XML映射文件来描述SQL语句和Java对象之间的映射关系,使得开发者无需编写复杂的SQL语句即可完成数据库操作。
性能优化:MyBatis通过一级缓存和二级缓存机制来提高查询性能,同时还支持动态SQL、分页查询等功能,使得MyBatis能够在高并发环境下保持良好的性能表现。
安全性:MyBatis提供了严格的权限控制机制,可以限制不同用户对数据库的操作权限,保证数据的安全性。
1.1 MyBatis概念及特点MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。
相比于传统的数据访问技术,MyBatis让开发者能够更加直接地与数据库交互,从而有效地避免了大量繁琐的SQL语句编写工作。
MyBatis新手入门
第一章用MyBatis实现增删查改第一步下载打开http://mybatis.github.io/看这里使劲点它!跳转到这个页面再使劲点它就会跳转到github仓库,看到这个界面注意:这里只是mybatis的一些发表信息,点一下它终于来到这个下载地方了,特么的好累动一下你的手指,滚动到最下方点它转到到这里看,出来了吧,找的我那么辛苦,当时恨不得点烂它!解压出来,进去看到第二步搭建和配置这个目录结构就对了,用MyEclipse创建一个Web Project,把mybatis-3.2.8.jar拷贝粘贴到自己创建的MyEclipse项目中的lib下(不知道哪里是MyEclipse项目的lib文件夹的人建议转行别写代码了),我的结构是这样的为什么里面还多了一个mysql-connector-java-5.1.6-bin.jar呢?它是干嘛用的呢?我顺手拷贝进去的,看到这个mysql的jdbc驱动大家应该明白我要测试用的数据库是mysql,自己随意,用什么数据库就拷贝什么驱动。
MyBatis里面是没有的,网上多得是,自己要什么驱动就去下载什么驱动。
可以动手了动手去src下创建3个包,我是这样子的我个人比较喜欢收缩着看,比较简洁,看这里点它- Package Presentation – Hierarchial,就变成这样这样命名有自己的含义,我打算inter包专门放接口(Interface),model包放Bean,test包放测试类。
创建一个叫mybatis的数据库,在里面创建一个表叫user,表user的结构如下懒人请复制:CREATE TABLE IF NOT EXISTS `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`userName` varchar(50) DEFAULT NULL,`userAge` int(11) DEFAULT NULL,`userAddress` varchar(200) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ; 顺便弄写数据进去INSERT INTO `user` (`id`, `userName`, `userAge`, `userAddress`) VALUES (1, '余小龙', 10, '人民广场'),(3, 'lisiwei', 80, '中山大学南方学院123'),(5, '麦家潮', 20, '中国'),(6, '周杰伦', 30, '北京');在包model下创建一个User类,根据数据库表在类中创建相应的成员变量,如下:private int id;private String userName;private String userAge;private String userAddress;右击鼠标——Source——Generate Getter and Setter点全选——OK,变成这样子创建完User类,接下来在同一个包(model)下创建一个User.xml文件,填以下内容:头部的声明代码太麻烦?懒人请复制<!DOCTYPE mapper PUBLIC"-////DTD Mapper 3.0//EN" "/dtd/mybatis-3-mapper.dtd">接下来,定义一个查询方法,根据用户ID查询User表中的某一条记录,在<mapper></mapper>里面写<select>标签是MyBatis的查询标签,id=”selectUserById”随便改,但是,要记住哦,等下会用到的parameterType是参数类型的意思,resultType是结果类型的意思,把查询的结果封装成一个User对象,有人问过我,为什么我经常在一些表名两边加上反冒号`,如:,知道的请跳过以下内容:在mysql中,有些关键字是不能用的,例如order、database、table等等,我在表名user两端加上`,作用就是告诉mysql,我写这个user不是想要调用mysql关键字,这个user仅仅代表我自己定义的数据库表名,mysql的关键字太多,我不能确定user是不是其中之一,不想去查,所以加上``了事,那么mysql 就不管user是不是mysql关键字,就算不小心user真的是关键字,也当user 不起作用,忽略它。
什么是Mybatis?最全的Mybatis知识点整合!
什么是Mybatis?最全的Mybatis知识点整合!什么是Mybatis?最全的Mybatis知识点整合!⼀、什么是Mybatis?MyBatis是⼀个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本⾝,不需要花费精⼒去加载驱动、创建连接、创建Statement等繁杂过程。
程序员直接编写原⽣态sql,可以严格控制sql执⾏性能,灵活度⾼。
Mybatis可以使⽤XML或注解来配置和映射原⽣信息,将POJO映射成数据库中的记录,避免⼏乎所有JDBC代码和⼿动设置参数以及获得结果集。
通过xml⽂件或注解的⽅式将要执⾏的各种statement配置起来,并通过java对象和statement中sql的动态参数进⾏映射⽣成最终执⾏的sql语句,最后由Mybatis框架执⾏sql并将返回结果映射为java对象并返回。
(从执⾏sql到返回result的过程)。
⼆、Mybatis的优点基于SQL语句编程,相当灵活,不会对应⽤程序或者数据库的现有设计造成任何影响,SQL写在XML⽂件中,接触SQL与程序代码的耦合,便于统⼀管理;提供XML便签,⽀持编写动态SQL语句,并可以重⽤。
与JDBC相⽐,减少了50%以上的代码量,消除了JDBC⼤量冗余的代码,不需要⼿动开关连接。
很好的与各种数据库兼容(因为MyBatis使⽤JDBC来连接数据,所以只要JDBC⽀持数据库MyBatis都⽀持)。
能够与Spring框架很好的集成。
提供映射标签,⽀持对象与数据库的ORM字段关系映射;提供对象关系映射标签,⽀持对象关系组件维护。
三、Mybatis框架的缺点SQL语句的编写⼯作量较⼤,尤其当字段多,关联表多时,对开发⼈员编写SQL语句的功底有⼀定要求。
SQL语句依赖数据库,导致数据库移植性差,不能随意更换数据库。
四、MyBatis框架使⽤场合MyBatis专注于SQL本⾝,是⼀个⾜够灵活的DAO层解决⽅案。
Mybatis教程及使用配置
Mybatis教程及使用配置2013-11-22 | 所属分类:Mybatis 教程入门配置12_17一.Mybatis简介MyBatis由Clinton Begin 在2002 年创建,其后,捐献给了Apache基金会,成立了iBatis 项目。
2010 年5 月,将代码库迁至Google Code,并更名为MyBatis。
MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。
MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。
相对Hibe rnate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。
二.从JDBC到Mybatis1. JDBC查询数据库数据,一般需要以下七个步骤:(1)加载JDBC驱动(2)建立并获取数据库连接(3)创建 JDBC Statements 对象(4)设置SQL语句的传入参数(5)执行SQL语句并获得查询结果(6)对查询结果进行转换处理并将处理结果返回(7)释放相关资源(关闭Connection,关闭Statement,关闭ResultSet)实现JDBC有七个步骤,哪些步骤是可以进一步封装的,减少我们开发的代码量?2. JDBC演变到Mybatis过程第一步优化:连接获取和释放问题描述:通过JDBC的方式数据库连接频繁的开启和关闭本身就造成了资源的浪费,影响系统的性能;但是现在连接池多种多样,可能存在变化,有可能采用DBCP的连接池,也有可能采用容器本身的JNDI数据库连接池。
解决问题:数据库连接的获取和关闭我们可以使用数据库连接池来解决资源浪费的问题,通过连接池就可以反复利用已经建立的连接去访问数据库了,减少连接的开启和关闭的时间。
同时通过DataSource进行隔离解耦,统一从DataSource里面获取数据库连接,DataSource 具体由DBCP实现还是由容器的JNDI实现都可以,将DataSource的具体实现通过让用户配置来应对变化。
通用源码阅读指导书——mybatis源码详解
通用源码阅读指导书——mybatis源码详解Mybatis是一款优秀的ORM框架,广泛应用于Java项目中。
但是,对于很多Java开发者来说,mybatis源码还是一个难题。
本指导书将带您深入了解mybatis源码,帮助您更好地理解该框架的底层原理。
第一章:mybatis框架简介1.1 mybatis框架的概念1.2 mybatis框架的优点1.3 mybatis框架的缺点第二章:mybatis的体系结构2.1 mybatis的整体架构2.2 mybatis的主要组成部分2.3 mybatis的工作流程第三章:mybatis源码结构3.1 mybatis源码的目录结构3.2 mybatis源码的包结构3.3 mybatis源码的重要类解析第四章:mybatis的配置解析4.1 mybatis的配置文件4.2 mybatis的配置加载过程4.3 mybatis的配置解析流程第五章:mybatis的Mapper解析5.1 mybatis的Mapper文件5.2 mybatis的Mapper文件解析5.3 mybatis的Mapper文件与Java接口的映射第六章:mybatis的核心流程分析6.1 mybatis的核心组件6.2 mybatis的数据源管理6.3 mybatis的SqlSessionFactory6.4 mybatis的SqlSession6.5 mybatis的MapperProxy6.6 mybatis的Executor第七章:mybatis的插件机制7.1 mybatis的插件机制简介7.2 mybatis的插件实现方式7.3 mybatis的插件使用方法第八章:mybatis的缓存机制8.1 mybatis的缓存机制简介8.2 mybatis的一级缓存8.3 mybatis的二级缓存8.4 mybatis的缓存机制配置第九章:mybatis的优化与扩展9.1 mybatis的性能优化9.2 mybatis的扩展机制9.3 mybatis的自定义类型处理器结语:mybatis源码解读的意义通过本指导书的学习,您将深入了解mybatis源码的底层原理,掌握mybatis的核心组件、插件机制、缓存机制等内容,为您的日常开发工作提供帮助。
Mybatis新手教程之简单入门
Mybatis新⼿教程之简单⼊门1、Mybatis概述 MyBatis 是⽀持普通 SQL 查询(相⽐较于Hibernate的封装,Mybatis是半⾃动化的JDBC封装,⼀个特点就是Mybatis执⾏的SQL查询语句需要⾃⼰在配置⽂件中写),存储过程和⾼级映射的优秀持久层框架。
MyBatis 消除了⼏乎所有的 JDBC 代码和参数的⼿⼯设置以及对结果集的检索。
MyBatis 可以使⽤简单的XML 或注解⽤于配置和原始映射,将接⼝和 Java 的 POJO(Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录。
2、Mybatis原理解析下⾯以Mybatis简单的执⾏流程 1、加载mybatis全局配置⽂件(数据源、mapper映射⽂件等),解析配置⽂件,MyBatis基于XML配置⽂件⽣成Configuration,和⼀个个MappedStatement(包括了参数映射配置、动态SQL语句、结果映射配置),其对应着<select | update | delete | insert>标签项。
2、SqlSessionFactoryBuilder通过Configuration对象⽣成SqlSessionFactory,⽤来开启SqlSession。
3、SqlSession对象完成和数据库的交互: a、⽤户程序调⽤mybatis接⼝层api(即Mapper接⼝中的⽅法) b、SqlSession通过调⽤api的Statement ID找到对应的MappedStatement对象 c、通过Executor(负责动态SQL的⽣成和查询缓存的维护)将MappedStatement对象进⾏解析,sql参数转化、动态sql拼接,⽣成jdbc Statement对象 d、JDBC执⾏sql。
e、借助MappedStatement中的结果映射关系,将返回结果转化成HashMap、JavaBean等存储结构并返回。
mybatis PPT课件
1
内容
• 起步 • 配置文件 • 映射文件 • 动态SQL • 整合Spring
.
2
起步
.
3
起步
• 编程模型 • hello world
.
4
编程模型
SqlSessionFactoryBuilder SqlSessionFactory
SqlSession
public List<Member> selectAll(); }
.
9
主类
public class Main {
public static void main(String [] args) throws Exception { InputStream is = Resources.getResourceAsStream("mybatis.cfg.xml"); SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is); SqlSession ss = ssf.openSession(); MemberMapper mm = ss.getMapper(MemberMapper.class); List<Member> ls = mm.selectAll(); for (Member m: ls) System.out.println(m.getId() + ":" + m.getName()); ss.close();
<select id="selectUsers" parameterType="int" resultType="er"> select id, username, hashedPassword from some_table where id = #{id}
mybatis
mybatismybatis第⼀章介绍1. 三层架构 界⾯层:和⽤户打交道的,接收⽤户的请求参数,显⽰处理结果的。
(jsp ,html ,servlet) 业务逻辑层:接收了界⾯层传递的数据,计算逻辑,调⽤数据库,获取数据 数据访问层:就是访问数据库,执⾏对数据的查询,修改,删除等等的。
三层对应的包 界⾯层: controller包(servlet) 业务逻辑层: service 包(XXXService类) 数据访问层: dao包(XXXDao类)三层中类的交互 ⽤户使⽤界⾯层--> 业务逻辑层--->数据访问层(持久层)-->数据库(mysql)三层对应的处理框架 界⾯层---servlet---springmvc(框架) 业务逻辑层---service类--spring(框架) 数据访问层---dao类--mybatis(框架)2.框架 框架是⼀个舞台,⼀个模版模版: 1. 规定了好⼀些条款,内容。
2. 加⼊⾃⼰的东西框架是⼀个模块 1.框架中定义好了⼀些功能。
这些功能是可⽤的。
2.可以加⼊项⽬中⾃⼰的功能,这些功能可以利⽤框架中写好的功能。
框架是⼀个软件,半成品的软件,定义好了⼀些基础功能,需要加⼊你的功能就是完整的。
基础功能是可重复使⽤的,可升级的。
框架特点: 1. 框架⼀般不是全能的,不能做所有事情 2. 框架是针对某⼀个领域有效。
特长在某⼀个⽅⾯,⽐如mybatis做数据库操作强,但是他不能做其它的。
3. 框架是⼀个软件mybatis框架⼀个框架,早期叫做ibatis, 代码在github。
mybatis是 MyBatis SQL Mapper Framework for Java (sql映射框架) 1)sql mapper :sql映射 可以把数据库表中的⼀⾏数据映射为⼀个java对象。
⼀⾏数据可以看做是⼀个java对象。
操作这个对象,就相当于操作表中的数据 2) Data Access Objects(DAOs) : 数据访问,对数据库执⾏增删改查。
Mybatis介绍
简介MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。
MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java 对象)映射成数据库中的记录。
Mybatis的功能架构分为三层(图片借用了百度百科):1) API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。
接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
2) 数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。
它主要的目的是根据调用的请求完成一次数据库操作。
3) 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。
为上层的数据处理层提供最基础的支撑。
快速入门Mybatis的整体流程图SqlSessionFactoryBuilder每一个MyBatis的应用程序的入口是SqlSessionFactoryBuilder,它的作用是通过XML配置文件创建Configuration对象(当然也可以在程序中自行创建),然后通过build方法创建SqlSessionFactory对象。
没有必要每次访问Mybatis就创建一次SqlSessionFactoryBuilder,通常的做法是创建一个全局的对象就可以了。
示例程序如下:29.30.</configuration>要注意XML头部的声明,需要用来验证XML文档正确性。
Mybatis介绍 PPT
一、认识sqlMapClient
▪ API【2】
– Map queryForMap(ng.String id, ng.Object parameterObject, ng.String keyProp);
– Map queryForMap(ng.String id, ng.Object parameterObject, ng.String keyProp, ng.String valueProp);
三、与Hibernate框架比较
▪ 实际开发比较
– 3、可维护性方面,iBatis 更好一些。因为 iBatis 的 sql 都保存到单独的文件中。而 Hibernate 在有些情况 下可能会在 java 代码中保sql/hql。
四、工作流程
四、工作流程
▪ 1)接收一个对象参数 ▪ 2)执行这个映射的statement ▪ 3)返回
ng.Object parameterObject); – List queryForList(ng.String id,
ng.Object parameterObject, int skip, int max);
一、认识sqlMapClient
▪ API【4】
一、认识sqlMapClient
▪ API【3】
– List queryForList(ng.String id); – List queryForList(ng.String id, int skip, int
max); – List queryForList(ng.String id,
MyBATIS介绍
大纲
▪ 第一部分: MyBATIS介绍 ▪ 第二部分:基础知识点 ▪ 第三部分:开发中的应用
mybatis-中文文档
mybatis-中⽂⽂档1 Mybatis的介绍Mybatis就是⼀个封装jdbc的持久层框架,它和hibernate都属于ORM框架,但是具体的说,hibernate是⼀个完全的orm框架,⽽mbatis是⼀个不完全的orm框架.Mybatis让程序员只关注sql本⾝,⽽不需要去关注如连接的创建、statement 的创建等操作。
Mybatis会将输⼊参数据、输出结果进⾏映射MyBatis 本是的⼀个开源项⽬, 2010年这个项⽬由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis 对ibatis进⾏⼀些改进。
MyBatis是⼀个优秀的持久层框架,它对jdbc的操作数据库的过程进⾏封装,使开发者只需要关注 SQL 本⾝,⽽不需要花费精⼒去处理例如注册驱动、创建connection、创建statement、⼿动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的⽅式将要执⾏的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进⾏映射⽣成最终执⾏的sql语句,最后由mybatis框架执⾏sql并将结果映射成java对象并返回。
2 分析jdbc的问题2.1 原⽣态的jdbc代码publicstaticvoid main(String[] args) {Connection connection = null;PreparedStatement preparedStatement = null;ResultSet resultSet = null;try {//1、加载数据库驱动Class.forName("oracle.jdbc.OracleDriver");//2、通过驱动管理类获取数据库链接connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "xiaoming", "root");//3、定义sql语句 ?表⽰占位符String sql = "select * from t_user where t_name = ?";//4、获取预处理statementpreparedStatement = connection.prepareStatement(sql);//5、设置参数,第⼀个参数为sql语句中参数的序号(从1开始),第⼆个参数为设置的参数值preparedStatement.setString(1, "程冠西");//6、向数据库发出sql执⾏查询,查询出结果集resultSet = preparedStatement.executeQuery();//7、遍历查询结果集while(resultSet.next()){System.out.println(resultSet.getString("t_id")+""+resultSet.getString("t_name")); }} catch (Exception e) {e.printStackTrace();}finally{//8、释放资源if(resultSet!=null){try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}if(preparedStatement!=null){try {preparedStatement.close();} catch (SQLException e) {e.printStackTrace();}}if(connection!=null){try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}}2.2 问题总结1、在创建连接时,存在硬编码配置⽂件2、在执⾏statement时存在硬编码配置⽂件(映射⽂件)3、频繁的开启的关闭数据库连接,会造成数据库性能下降。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
System.out.println(customer.toString());
} }
sqlSession.close();
✎ 6.4.1 查询客户
2.根据客户名模糊查询客户信息
1 在映射文件CustomerMapper.xml中,添加根据客户名模糊查询客 户信息列表的SQL语句。
<mappers> <mapper resource="com/itheima/mapper/CustomerMapper.xml" />
</mappers> </configuration>
✎ 6.4.1 查询客户
7 在src目录下,创建一个com.itheima.test包,在该包下创建测试类
✎ 6.4.1 查询客户
2 在Eclipse中,创建一个名为chapter06的Web项目,将MyBatis的核心 JAR包、lib目录中的依赖JAR包,以及MySQL数据库的驱动JAR包一同添加到 项目的lib目录下, 并发布到类路径中。
✎ 6.4.1 查询客户
3 由于MyBatis默认使用log4j输出日志信息,所以如果要查看控制台的 输出SQL语句,那么就需要在classpath路径下配置其日志文件。在项目的src 目录下创建log4j.properties文件。
CREATE DATABASE mybatis; USE mybatis; CREATE TABLE t_customer (
id int(32) PRIMARY KEY AUTO_INCREMENT, username varchar(50), jobs varchar(50), phone varchar(16) ); INSERT INTO t_customer VALUES ('1', 'joy', 'doctor', '13745874578'); …
</select> </mapper>
✎ 6.4.1 查询客户
6 在src目录下,创建MyBatis的核心配置文件mybatis-config.xml。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN"
✎ 预习检查
– 什么是MyBatis? – MyBatis是如何工作的?
✎ 学习目标
1
MyBatis入门程序的编写 掌握
MyBatis的基础知识
3
MyBatis的工作原理
2
✎ 主讲内容
6.1 什么是MyBatis
6.2 MyBatis的下载和使用 6.3 MyBatis的工作原理 6.4 MyBatis入门程序
主讲内容
Speech content
✎ 6.4.1 查询客户
在实际开发中,查询操作通常都会涉及到单条数据的精确查 询,以及多条数据的模糊查询。
1
-根据客户编号查询
客户信息。
2
-根据客户名模糊查
询客户信息。
✎ 6.4.1 查询客户
1.根据客户编号查询客户信息
1 MySQL数据库中,创建一个名为mybatis的数据库,在此数据库中 创建一个t_customer表,同时预先插入几条数据。
✎ 主讲内容
6.1 什么是MyBatis
6.2 MyBatis的下载和使用 6.3 MyBatis的工作原理 6.4 MyBatis入门程序
主讲内容
Speech content
✎ 6.2 MyBatis的下载和使用
下载地址:https:///mybatis/mybatis-3/releases
} }
", jobs=" + jobs + ", phone=" + phone + "]";
✎ 6.4.1 查询客户
5 在src目录下,创建一个com.itheima.mapper包,并在包中创建映射 文件CustomerMapper.xml。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN"
应用程序
保存、修改、 删除等操作
持久化对象
相互映射 ORM框架
ORM框架的工作原理
关系数据库
✎ 6.1 什么是MyBatis
Hibernate与MyBatis有什么区别?
Hibernate
• Hibernate是一个全表映射的框架。 • 通常开发者只需定义好持久化对象到数据库
表的映射关系,就可以通过Hibernate提供的 方法完成持久层操作。 • 开发者并不需要熟练的掌握SQL语句的编 写,Hibernate会根据制定的存储逻辑,自动 的生成对应的SQL,并调用JDBC接口来执 行,所以其开发效率会高于MyBatis。 • Hibernate也存在一些缺点,例如它在多表关 联时,对SQL查询的支持较差;更新数据 时,需要发送所有字段;不支持存储过程; 不能通过优化SQL来优化性能等。
使用MyBatis框架非常简单,只需在应用程序中引入MyBatis的核 心包和lib目录中的依赖包即可。
注意:如果底层采用的是MySQL数据库,那么还需要将MySQL数据库的驱动
JAR包添加到应用程序的类路径中;如果采用其他类型的数据库,则同样需要将对应 类型的数据库驱动包添加到应用程序的类路径中。
✎
Java EE企业级应用开发教程
(Spring+Spring MVC+MyBatis)
第6章 初识MyBatis
· 什么是MyBatis · MyBatis的工作原理
· MyBatis的下载和使用 · MyBatis入门程序
✎ 作业点评
– 请简述Spring中事务管理的两种方式 – 请简述如何使用Annotation方式进行声明式事务管理。
# Global logging configuration log4j.rootLogger=ERROR, stdout # MyBatis logging configuration... .itheima=DEBUG # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender yout=org.apache.log4j.PatternLayout yout.ConversionPattern=%5p [%t] - %m%n
✎ 6.4.1 查询客户
4 在src目录下,创建一个com.itheima.po包,在该包下创建持久化类
Customer,并在类中声明id、username、jobs和phone属性,及其对应的
getter/setter方法。
public class Customer {
private Integer id;
private String username;
private String jobs;
private String phone //省略Getter和Setter方法
@Override
public String toString() {
return "Customer [id=" + id + ", username=" + username +
✎ 主讲内容
6.1 什么是MyBatis
6.2 MyBatis的下载和使用 6.3 MyBatis的工作原理 6.4 MyBatis入门程序
主讲内容
Speech content
✎ 6.3 MyBatis的工作原理
加载映射文件
✎ 主讲内容
6.1 什么是MyBatis
6.2 MyBatis的下载和使用 6.3 MyBatis的工作原理 6.4 MyBatis入门程序
SqlSession sqlSession = sqlSessionFactory.openSession();
Customer customer = sqlSession.selectOne("com.itheima.mapper"
+ “.CustomerMapper.findCustomerById”, 1);
"/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.itheima.mapper.CustomerMapper">
<select id="findCustomerById" parameterType="Integer" resultType="com.itheima.po.Customer"> select * from t_customer where id = #{id}
MyBatis框架的压缩包 Windows系统下MyBatis框架的源码包 Linux系统下MyBatis框架的源码包
✎ 6.2 MyBatis的下载和使用
下载地址:https:///mybatis/mybatis-3/releases
解压后
MyBatis的依赖包
MyBatis的核心包 MyBatis使用手册
主讲内容
Speech content