- 创建maven父工程,引入相关依赖。
<!--相关依赖-->
<dependencyManagement>
<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驱动 -->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
</dependencies>
</dependencyManagement>
- 创建子工程,并引入依赖。
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
-
创建MyBatis核心配置文件,在MyBatis中文网中找到相应的配置文件内容并粘贴即可。核心配置文件的名称通常为mybatis-config.xml,也可以自定义一个别的名称。创建好配置文件后,将中文网中的示例粘贴即可。
-
准备测试用的数据库,建立一个mybatis的测试数据库,并使用命令建立表
create table user(id int,username varchar(20),password varchar(20),age int,sex char,email varchar(20));
。 -
创建mapper接口,mapper接口就相当于Dao类,然后再创建pojo类用于接收查询结果。
-
创建映射文件。
<?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">
<!--要保证SQL语句能够映射到相应的方法,必须要保证以下两点
1.namespace要与接口的全类名一致
2.SQL标签的id要与接口中的方法名一致-->
<mapper namespace="pers.beiluo.mabatis.mapper.UserDao">
<select id="insertUser">
insert into user values (1,'zhangsan','123',25,'男','asd@qsd.com')
</select>
</mapper>
- 测试。
@Test
public void test1() throws IOException {
//读取mybatis核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
//获取工厂Builder
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//获取工厂
SqlSessionFactory build = sqlSessionFactoryBuilder.build(resourceAsStream);
//获取sqlsession
SqlSession sqlSession = build.openSession();
//得到接口的实例对象,接口实现类由mybatis负责
UserDao mapper = sqlSession.getMapper(UserDao.class);
//执行插入语句
Integer i = mapper.insertUser();
//由于事务管理类型为JDBC,所以需要手动提交事务
sqlSession.commit();
//
System.out.println(i);
}
- 优化:
SqlSession sqlSession = build.openSession(true);
可以开启事务自动提交,不需要再手动提交。- 加入log4j日志功能:引入相关依赖,加入log4j配置文件:
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
。log4j配置文件找一个粘贴即可,不用自己写。
- 修改用户测试。
<update id="updateUser">
update user set username='lisi',age=30,email='kjn@laksnd.com' where id=2
</update>
- 删除用户测试。
<delete id="deleteUser">
delete from user where id=2
</delete>
- 查询用户测试。
<!--在设置查询语句时,需要额外设置resultType或resultMap
resultType:用于实体类字段名与表中字段名一致的情况
resultMap:自定义映射,实体类字段名与表中字段名不一致的情况-->
<select id="getUserById" resultType="pers.beiluo.mybatis.pojo.User">
select * from user where id=1
</select>
<!--即使是查询多条记录,本质上还是一条一条查的,所以仍旧映射到实体类-->
<select id="getAllUsers" resultType="pers.beiluo.mybatis.pojo.User">
select * from user
</select>