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)