文章目录
1. 框架部署
1.1 创建空的Maven项目
1.2 添加依赖
需要添加的依赖为 mybatis
以及 mysql driver
,如下
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
1.3 文件配置
- 创建一个自定义文件模板,名为
mybatis-config
,后缀名为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>
</configuration>
- 在resources目录下创建
jdbc.properties
文件,配置键值对如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306?useUnicode=true&characterEncoding=utf8
username=root
password=ma123456
- 在
resource
文件夹目录下创建名为mybatis-config.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>
<!-- 使用jdbc.properties中的数据 -->
<properties resource="jdbc.properties"></properties>
<!-- 在environments配置数据库连接信息 -->
<!-- 在environments标签中可以定义多个environment标签,每个environment标签可以定义一套连接配置 -->
<!-- default属性,用来指定使用哪个environment标签 -->
<environments default="mysql">
<environment id="mysql">
<!--transactionManager标签用于配置数据库管理方式-->
<transactionManager type="JDBC"></transactionManager>
<!--dataSource标签就是用来配置数据库连接信息 -->
<dataSource type="POOLED">
<!--引用properties中的文件信息-->
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
</configuration>
2. 框架使用
2.1 创建数据表
我要操作的数据库的表构造如下,表名为 books
:
2.2 创建实体类
- 创建实体类之前我们先添加
lombok
依赖,这样就能依靠注释来添加构造方法个getter
和setter
方法。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
- 创建一个接收数据库信息的实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Book {
private int num;
private String book_name;
private String author;
}
2.3 创建DAO
创建一个DAO,定义数据库的操作方法
public interface BookDAO {
//插入书籍
public int insertBook(Book book);
//删除书籍
public int deleteBook(int num_book);
}
2.4 创建DAO映射文件
有了DAO的方法实现接口,接下来就是在映射文件中实现接口了。
- 创建自定义模型
mapper
,后缀为xml
,内容如下:
<?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">
<mapper namespace="">
</mapper>
- 在
resource
文件夹下创建文件夹mappers
,在mappers
中用上述模板创建Bookmapper.xml
文件,文件内容如下:
<?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">
<!--mapper文件相当于DAO接口的‘实现类’,namespace属性要指定`实现`DAO接口的全限定名-->
<mapper namespace="com.mr.DAO.BookDAO">
<insert id="insertBook">
insert into novels.books
values(#{num},#{name},#{author})
</insert>
<delete id="deleteBook">
delete from novels.books where num=#{num}
</delete>
</mapper>
注意:上述代码中 #{num}
中的 num
是自己定义的类中的属性名,num=#{num}
中前一个 num
是数据库中列的名字
2.5 将映射文件添加到主配置文件
在 mybatis-config.xml
文件中的 environment
标签后添加 mappers
标签,指定映射文件的映射位置。
<mappers>
<mapper resource="mappers/BookMapper.xml"></mapper>
</mappers>
3. 单元测试
3.1 添加依赖
测试时需要添加单元测试的依赖,如下
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
3.2 创建测试类
在要测试的类的代码后面点击右键,点击 generate
, 点击 Test
,选择要测试的方法,选择 JUnit4
,就能生成要测试的单元类。
3.3 测试代码
测试代码如下所示:
public class BookDAOTest {
@Test
public void insertBook() {
try {
//加载mybatis配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//会话工厂
SqlSessionFactory factory = builder.build(is);
//会话(连接)
SqlSession sqlSession = factory.openSession();
//通过会话获取DAO对象
BookDAO bookDAO = sqlSession.getMapper(BookDAO.class);
//测试StudentDAO中的方法
int i = bookDAO.insertBook(new Book(11, "福尔摩斯探案全集", "柯南道尔"));
//需要手动提交
sqlSession.commit();
System.out.println(i);
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void deleteBook() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(is);
SqlSession sqlSession = factory.openSession();
BookDAO bookDAO = sqlSession.getMapper(BookDAO.class);
int i = bookDAO.deleteBook(11);
sqlSession.commit();
System.out.println(i);
} catch (IOException e) {
e.printStackTrace();
}
}
}