1. 前期准备:
Mysql数据库
2. IDEA中创建
1. 引入maven
- mybatis
- junit
- mysql-connector-java
<!-- 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>8.0.16</version>
</dependency>
2. mybatis核心配置文件
- mybatis-config.xml
- jdbc.properties
重点是environments和mappers标签
<?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配置文件 ${v}-->
<properties resource="jdbc.properties"></properties>
<!-- 设置当前实体类的别名-->
<typeAliases >
<!-- 直接指定实体类的别名为abc-->
<typeAlias type="com.zt.mybatis.pojo.User" alias="abc"></typeAlias>
<!-- 不写alias时,实体类的别名就是类名,且不区分大小写-->
<typeAlias type="com.zt.mybatis.pojo.User"></typeAlias>
<!-- 用package时,此包名下面的所有类的别名 都是本类名且不区分大小写-->
<package name="com.zt.mybatis.pojo"/>
</typeAliases>
<!--
配置链接数据库的环境
default : 选择那个环境有效
-->
<environments default="development">
<environment id="development">
<!-- 事务管理器 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源 即连接池-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 引入 MyBatis 的映射文件 : 存放SQL语句 和 POJO的映射方式 -->
<mappers>
<!-- <mapper resource="mappers/UserMapper.xml"></mapper>-->
<package name="com.zt.mybatis.mapper"/>
</mappers>
</configuration>
jdbc.url=jdbc:mysql://localhost:3306/ibatis?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
jdbc.username=root
jdbc.password=xxxxx
jdbc.driver=com.mysql.cj.jdbc.Driver
3. Mapper接口
public interface UserMapper {
/**
*
*当调用此方法进行插入的时候,根据接口名找到对应的映射文件,再找到映射文件中对应标签中与接口的方法名相同的id名
*/
/**
* 添加用户信息
* @return
*/
Integer insertUser();
}
4. sql映射文件Mapper(和上一步mapper接口命名一致)
- 接口的全类名和映射文件的namespace一致
- 接口的方法的方法名和映射文件中sql标签的id一致
<?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">
<!-- namespace :对应的mapper接口 -->
<mapper namespace="com.zt.mybatis.mapper.UserMapper">
<!--
id : 对应接口的方法名称.
mapper接口和映射文件有两个对应
1. 接口的全类名和映射文件的namespace一致
2. 接口的方法的方法名和映射文件中sql标签的id一致
-->
<insert id="insertUser" >
INSERT INTO t_user VALUES (NULL , 'admin', '123456', 23, '男', '12345@qq.com');
</insert>
</mapper>
5. 测试
public class MybatisTest {
@Test
public void testInsert() throws IOException {
// 获取核心配置文件的输入流
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
// 获取SqlSessionFactoryBuilder 对象 -> 工厂构建器
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 创建 SqlSession 工厂 -> 创建会话
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);
// 获取 会话 对象 -> MyBatis 提供的操作数据库的对象
//如果没写commit 就不会自动提交
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获得Mapper接口的代理类 -> 操纵Mapper类执行数据库操作
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 执行SQL操作
Integer rows = userMapper.insertUser();
// User user = userMapper.selectUser();
// System.out.println("rows = " + user);
System.out.println("rows = " + rows);
// 提交事务 -> 事务是默认开启的
sqlSession.commit();
// 关闭资源
sqlSession.close();
}
}