这是我参与「掘金日新计划 · 4 月更文挑战」的第 2 天,活动详情:juejin.cn/post/721806…
什么是mybatis
其实关于mybatis,我们可以简单理解为一种工具,试想一下,在以前学习javaweb开发的时候,我们对数据库的访问和书写非常多的重复部分。JDBC 数据库连接 - 掘金 (juejin.cn)
我们需要先拿到驱动名称,然后通过class.forname拿到驱动程序,然后通过Connection建立连接..非常麻烦。
如果我们自己写basedao来进行数据库连接控制,那么会发现代码很重复,每一个实体类都需要使用差不多的代码。
在这种情况下,jdbc模板就出现了,他就是把一些增删改查的东西封装起来了,方便了我们进行处理。但是他里面具体的sql还是需要我们程序员控制,所以在这种情况下提出了对象关系映射。把实体类和数据库自己连接起来,我们就可以从sql里面解放出来。
mybatis继承了Hibernate。
了解mybatis首先要了解持久化
持久化
持久:把数据保存到可以永久保存的存储设备里面(内层里面的对象保存到磁盘)
持久化:把内层里面的数据存储在关系型的数据库里面,当然也可以存储在磁盘文件里面,存储在xml数据文件里面。
持久层:专注于实现数据持久化的一个特定系统的逻辑层面,数据使用者和数据视图相关联
mvc三层模式里面,model包含了复杂的业务逻辑和数据逻辑,以及数据存取机制(比如jdbc连接,sql生成,Statement的创建)等。 持久化的工作就是把这些复杂的业务逻辑和数据逻辑分离,以将系统的紧耦合关系转变为松耦合关系,降低系统耦合度。
持久化的设计就是实现数据处理层的业务逻辑和数据逻辑分离的解耦合。
在这种情况下,我们又提出了四层结构
在控制层和模型层里面添加一个服务层,把模型层里面的业务逻辑和数据逻辑分开。让模型层主要关注数据本身持久化操作。因此模型层又名持久层
在idea环境下的maven项目集成mybatic
- 修改pom.xml文件,添加mybatis的相关依赖
- 在resources目录下面新建配置文件jdbc.properties
- 在applicationConttext.xml里面添加配置
- 创建model包,并在里面创建实体类
- 创建dao包,在里面创建相关的接口
- 创建service包,并在里面创建相关接口类和实现类
- 在controller里面创建控制器类
- 在resource目录下面新建mapper文件夹,并在其中创建映射文件。
- 创建数据库和数据表
- 启动tomcat,验证项目
- mybatis要添加什么依赖
1.数据库驱动
2.数据库连接池 c3p0,dbcp,hikaricp
3.spring-orm
4.mybatis
5.mybatis-spring
- 准备数据库连接信息 jdbc.properties
里面通过键=值的方式进行相关配置。
一般类似jdbc.driver=com.mysql.cj.jdbc.Driver
- 打开spring的配置文件。
1.配置数据源的位置。context:property-placebolder
.创建一个bean数据源,id是dataSource,里面配置相关属性,通过${jdbc.driver}进行注入。
2.书写sqlSessionFactory的bean文件,这是mybatis的核心组件,单例模式的bean。里面要有数据源位置,映射的mapper文件所在位置,我们的mybatis的组件配置在的位置。
3.一个mapper文件对于一个dao,使用我们还需添加一个注入了dao位置的bean。这个映射是sqlSessionFactiry管理的
4.配置事务管理器
- 创建dao,model,service,controller和准确jdbc的类似。
- 创建mapper mapper里面,select或者update等的id,其实就是对于到里面的方法名字