Mybatis框架
E:\mybatis-3.5.1
它是操作数据库的,相当于是一个增强的JDBC。
框架概述
软件开发常用结构
三层架构
-
界面层
跟用户直接打交道的,接收用户请求参数,显示处理结果:html,jsp,servlet
-
对应包controller包(servlet)
-
对应处理框架springmvc(代替servlet)
-
-
业务逻辑层
接受了界面层传递的数据,计算逻辑,调用数据库,获取数据
service层
-
service包(XXXservice类)
-
对应框架:spring框架(service类)
-
-
数据访问层(持久层)
访问数据库,执行数据增删改查等
dao层
-
dao包(XXXDao类)
-
对应框架:MyBatis框架(dao类)
-
mybatis它很小,很简单。
什么是框架
“模板”,整个或部分系统的可重用设计。
-
提供基础功能,这些功能是可用的。
-
可以加入项目中自己的功能,可以利用框架中的基础功能创造。
框架特点:
-
一般不是全能的,不能做所有事情
-
针对某一领域有校。特长在某一个方面。
-
是一个软件。(半成品,定义好了基础功能,它们可重复使用,可升级)
JDBC缺陷
大量代码重复,开发效率低,开发周期长!!业务代码和数据操作混合在一起,代码维护难度高。
以前我们用过DButil这样一些工具类,但是不能完全解决一些缺陷,所以出现了mybatis框架。
Mybatis能做什么
SQL Mapper Framework(sql映射框架)
早期叫ibatis上,发布于github上
tar.gz是在Linux上压缩文件的格式。
网课用到3.5.1版本。
-
sql mapper: sql映射
可以把数据库表中的一行数据,映射为一个java对象
一行数据可以看作是一个java对象
操作这个对象相当于是操作表中的数据
-
Data Abceess Objects
(DAOs)
数据访问,对数据库执行增删改查。
提供了哪些功能:
-
提供了创建Connection,Statement,ResultSet的的能力。不用开发人员再创建这些对象了。
-
提供了执行sql语句的能力,不用你执行sql了
-
提供了循环sql,把sql的结果转为java对象,List集合的能力。(不需我们再循环记录集)
-
提供了关闭资源的能力~
我们只要做:提供sql语句~
入门案例:select查询操作
创建新空项目,创建新model,选择Maven(勾选骨架模板)(archetype-quickstart)
目前示例只是访问数据库,而不需要web应用操作。
注意这里,我的Maven路径已经修改了!是3.6.3版本。
main目录下创建一个resources目录,并右键
修整一下pom.xml里的东西:
打包默认是Jar(packaging标签,不加也是jar)
build里内容先全删掉,我们暂时都不需要。
实现步骤:
-
新建的数据库表
(这里我建在mydb库下了)
-
加入maven的mybatis坐标,mysql驱动的坐标
-
创建实体类,Student,保存表中的一行数据
-
创建持久层的dao接口,定义操作数据库的方法
-
创建一个mybatis使用的配置文件
叫做sql映射文件:写sql语句的。一般一个表一个sql映射文件。
这个文件是xml文件。
-
创建mybatis的主配置文件:
一个项目就一个主配置文件。
它提供了数据库的连接信息和sql映射文件的位置信息。
-
创建使用mybatis类
通过mybatis访问数据库。
2、加入mybatis依赖和mysql驱动
驱动也叫依赖(不同说法)
<!--mybatis依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
记得刷新一下maven,要连网才能下载的。
3、创建Student实体类
每个属性都设置它们的getter和setter方法,重写toString()方法
//定义属性,目前要求是属性名和列名一样
private Integer id;
private String name;
private String email;
private Integer age;
4、创建dao接口
表中每一个数据都可以看作是Student对象,所以我们要获取student表中所有的数据,则应该返回一个泛型是Student对象的List集合。
//接口,操作student表
public interface StudentDao {
//查询student表的所有数据
public List<Student> selectStudents();
}
这个声明的抽象方法是对应的一个SQL执行。这个SQL要写在叫做sql映射的xml文件里面。 我们把它放到和这个接口同一目录之中。
5、创建sql映射文件(xml格式)
文件名称和接口保持一致。
xml文件格式在mybatis参考文档里找MyBatis中文网
也就是目录【入门】下的这个东东:
sql映射文件:写sql语句的,mybatis会执行这些sql
-
指定约束文件
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://my