第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层解决⽅案。
- 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