Mybatis從入門到入土——開發項目的具體步驟
Mybatis開發項目的具體步驟
項目中映入mybatis maven配置
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
可以根據最新的mybatis版本來進行開發
創建mybatis配置文件
mybatis的配置文件爲xml格式的,可以放在resource目錄下,具體內容:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties>
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/zhonghubatis?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/user.xml"/>
</mappers>
</configuration>
該文件主要是對mybatis進行全局配置,比如數據源、事務的配置,如datasource元素就是來配置數據源的,其中數據源就需要指定數據庫的一些配置信息;這裏不做過多闡述,後面會逐步說明
創建mapper.xml文件
我們需要對錶所有操作sql就卸載這個文件裏。然後在mybatis的配置文件中引入這個mapper文件。
<mappers>
<mapper resource="mapper/user.xml"/>
</mappers>
mappers元素可以有多個mapper文件,然後需要在mappers中進行引入然後mybatis才能使用到
創建Mapper接口
開發者通過Mapper接口來和mapper.xml建立映射,當我們調用Mapper接口中的方法的時候,會間接調用到mapper.xml中的各種數據的sql操作。
Mapper接口通過如下的代碼和Mapper.xml建立關聯
<mapper namespace="com.zhonghu.mybatis.UserMapper">
user.xml中有很多db操作,這些操作會和UserMapper接口中的方法通過java動態代理建立映射關係,當調用UserMapper中的方法的時候,會間接的調用到user.xml中對應的操作。
Mybatis核心對象介紹
SqlSessionFactoryBuilder
是一個用來構建SqlSessionFactory對象的構造器。其可用通過讀取mybatis的配置文件,然後構造一個SqlSessionFactory對象。
- 創建SqlSessionFactory有兩種方式:
- 一種是讀取Mybatis配置文件的方式
- 一種是硬編碼的方式(Springboot)。
其次將mybatis配置文件、mapper.xml文件、mapper.xml文件和Mapper接口的映射關係都事前解析好,然後放在java對象中。這樣就不用每次去重新解析xml了。
SqlSessionFactory
是一個重量級的對象,用來創建SqlSession的工程。其創建比較耗時,所以一個db一般會創建一個對象,然後在系統運行過程中會一直存在。
SqlSessionFactory是一個接口,此接口有兩個實現:DefaultSqlSessionFactory和SqlSessionManager。一般是通過SqlSessionFactoryBuilder來創建的
SqlSession
我們通過jdbc操作數據庫需要先要回去一個Connection的連接,然後拿着這個連接去db進行操作。
Mybatis中SqlSession就類似於jdbc中的Connection連接對象,在nybatis中叫做Sql會話對象,一般我們一個db操作使用一個SqlSession對象,所以這個對象一般是方法級別的,方法結束後對象就銷燬了,此對象可以用sqlSessionFactory.openSession方法來進行獲取
我們可以直接通過SqlSession對象來調用mapper.xml中各種db操作,需要指定具體的操作的id,id格式爲namespace.操作的id
Mapper接口
Mapper接口中的方法和mapper.xml文件中的各種db操作建立了映射,是通過Mapper接口完整名稱+方法名稱和mapper.xml中的namespace+具體操作的id來進行關聯的,然後我們直接調用Mapper接口中的方法就可以間接的操作db了。
Mapper接口需要通過SqlSession獲取,傳入Mapper接口對應的Class對象,然後會返回這個接口的實例,如
UserMapper mapper = sqlSession.getMapper(UserMapper.class)