准备工作

mybatis数据库和user表

建库

1
2
drop database if exists mybatis;
create database mybatis;

建表

1
2
3
4
5
6
7
8
9
10
11
12
13
drop table if exists user;
create table user
(
id bigint auto_increment comment '编号'
primary key,
user_name varchar(256) null comment '姓名',
user_account varchar(512) null unique comment '账号',
user_password varchar(512) null comment '密码',
user_sex varchar(10) null comment '性别',
user_age int null comment '年龄',
user_email varchar(512) null comment '账号'
)
comment '用户表';

创建maven工程

从idea中新建maven工程

image-20220907101418764

设置打包方式为jar包

在pom.xml中添加下面的代码

1
<packaging>jar</packaging>

引入相关依赖

相关依赖有mysql驱动、junit和Mybatis以及log4j日志框架,在pom.xml中加入以下代码块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<dependencies>
<!-- Mybatis核心 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.3</version>
</dependency>
<!-- log4j日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>

创建Mybatis核心配置文件

核心配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信息

Mybatis核心配置文件的名称随意,后缀为xml,这里叫做mybatis-config.xml

核心配置文件存放的位置在src/main/resources目录下

image-20220907102730345

Mybatis核心配置文件内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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>
<!--设置连接数据库的环境-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--设置mysql驱动-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--设置要连接的数据库-->
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis"/>
<!--设置mysql连接账号,这里换上自己的-->
<property name="username" value="root"/>
<!--设置mysql连接密码,这里换上自己的-->
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>

创建User实体类

创建数据库表user对应的实体类User

创建一个pojo包,里面放我们的实体类User

位置如下

image-20220907114136053

User类内容如下

1
2
3
4
5
6
7
8
9
public class User {
private Long id;
private String userName;
private String userAccount;
private String userPassword;
private String userSex;
private Integer userAge;
private String userEmail;
}

创建mapper接口

MyBatis中的mapper接口相当于jdbc的dao。但是mapper仅仅是接口,我们不需要实现

位置如下,先创建mapper包,在创建UserMapper接口

image-20220907112305336

UserMapper接口内容如下

int insertUser()方法等下做测试用

1
2
3
4
5
6
7
public interface UserMapper {
/**
* 添加用户信息
* @return 受影响的行数
*/
int insertUser();
}

创建MyBatis的映射文件

我们在Mybatis的映射文件中写sql语句,映射到mapper接口对应的方法上去

配置文件位置

image-20220907143700237

需要保证两个一致

  1. mapper接口的全类名和映射文件的namespace保持一致
  2. mapper接口中的方法的方法名和映射文件中编写sql的标签的id属性保持一致
1
2
3
4
5
6
7
8
9
10
11
<?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 namespace="mapper.UserMapper">
<!--mapper接口中的方法的方法名和映射文件中编写sql的标签的id属性保持一致-->
<insert id="insertUser">
insert into user values(null, 'jack', 'root', '123456', '男', 18, '11111111@youxiang.com')
</insert>
</mapper>

在核心配置文件中引入映射配置文件

在核心配置文件中添加以下内容

1
2
3
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>

插入位置如下

image-20220907152717487

加入log4j配置文件

log4j的配置文件名为log4j.xml,存放的位置是src/main/resources目录下

image-20220907144827127

log4j配置文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM
"http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration debug="true">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS}
%m (%F:%L) \n"/>
</layout>
</appender>
<logger name="java.sql">
<level value="debug"/>
</logger>
<logger name="org.apache.ibatis">
<level value="info"/>
</logger>
<root>
<level value="debug"/>
<appender-ref ref="STDOUT"/>
</root>
</log4j:configuration>

测试

在如下位置创建MyBatisTest测试类

image-20220907145543441

jdbc中的事务是自动提交的,当我们手动对事务进行管理的时候,才会取消自动管理事务

而mybatis默认是手动提交事务,这里我们为了方便测试,将其设置为自动提交事务(实际开发中应该根据业务需求设置自动提交事务)

内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class MyBatisTest {
@Test
public void test01() throws IOException {
// 获得核心配置文件的输入流形式
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
// 获取SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 以核心配置文件构建SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//
// 获取SqlSession对象,传参为true表示关闭事务,不传参表示开启事务
SqlSession sqlSession = sqlSessionFactory.openSession(true);
// 获取UserMapper对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 调用insertUser对象,插入数据
int result = mapper.insertUser();
// 受影响的行数大于0,表示插入成功
if (result > 0) {
System.out.println("插入成功!");
} else {
System.out.println("插入失败!");
}
}
}

测试结果

image-20220907153854701

至此,MyBatis环境已经基本搭建起来!