mybatis的环境搭建
1、创建maven工程并导入坐标
创建mybatis需要的依赖有下面几个:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
首先是mybatis,这里用的是3.4.5版本的
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
接着是mysql的相关jar包,注意:对与高版本的mysql(如mysql8.0版本及其以上),需要用的mysql-connector-java最好是在8.0以上版本,不然会出现错误提示
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
接着是日志jar包和junit(一个用于单元测试的包)
2、创建实体类和到接口
在上面的例子中,我在main中的java创建了一个dao包,里面存放着dao的接口,然后在同级目录下创建了实体类。
dao接口:
实体类:
实体类中的字段是关于数据库中某个表的列的字段的映射,一般我们取名和数据库中的列名一致
补充:在mybatis中把持久层的操作接口名称和映射文件也叫做Mapper,所以IUserDao和IUserMapper是相同含义的
3、创建mybatis的主配置文件
mybatis的主配置文件放在resource文件中:
一般主配置文件命名为SqlConfig,它是一个xml文件,主配置文件SqlConfig.xml包含的头文件为:
<?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元素中,如下:
<!--mybatis的主配置文件-->
<configuration>
<!--配置环境-->
<!--default是起一个名字-->
<environments default="mysql">
<!--配置mysql的环境-->
<environment id="mysql">
<!--配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源,也叫连接池-->
<dataSource type="POOLED">
<!--配置连接数据库的4个基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--后面的liaobinyu表示的是数据库-->
<property name="url" value="jdbc:mysql://localhost:3306/liaobinyu"/>
<property name="username" value="root"/>
<property name="password" value="liaobinyu"/>
</dataSource>
</environment>
</environments>
<!--指定映射配置文件的位置,映射配置文件时指每个dao独立的配置文件-->
<mappers>
<mapper resource="com/liaobinyu/dao/IUserDao.xml"/>
</mappers>
</configuration>
配置主配置文件大概是以下步骤:
- 头文件
- configuration
- environments default=“ ”
- environment id=“ ”
- transactionManager type=“ ”
- dataSource type=“ ”
- 配置数据库的四个信息
- environments default=“ ”
4、创建映射配置文件
映射配置文件放在resource文件夹下,头文件为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
补充:
mybatis环境搭建的注意事项:
-
创建IUserDao.xml和IUserDao.java时时为了和我们之前的知识保持一致。在mybatis中他把持久层的操作接口名称和映射文件也叫做:Mapper,所以IUserDao和IUserMapper是一样的
-
在IDEA中创建目录的时候,他和包是不一样的,包在创建时:com.liaobinyu.dao,它是三级结构,目录在创建时:com.liaobinyu.dao是一级目
-
mybatis的映射配置文件位置必须和dao接口的包结构相同
-
映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
如下图:
-
映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
当我们遵从了第三,第四,第五点之后,我们在开发后就无需再写dao的实现类
mybatis入门案列
上述的有以下几个步骤:
-
读取主配置文件:
- 使用类加载器,它只能读取类路径(项目下的src,或者maven项目下的java下和resource下)的配置文件
- 使用ServletContext对象的getRealPath()
-
创建SqlSessionFactory工厂
创建mybatis使用了构建者模式,优势就是把对象的创建细节隐藏,使使用者直接调用方法即可拿到对象
在上面的例子中,builder就相当于一个构建者,我们创建一个构建者,然后给构建者提供所需要的配置文件,使其帮我们创建一个工厂factory -
创建SqlSession
-
创建Dao接口的代理对象
这里需要注意的是:要想实现能够创建Dao接口的代理对象,则必须满足:
(1)mybatis的映射配置文件位置必须和dao接口的包结构相同
(2)即映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名 -
执行Dao接口中的方法
-
释放资源