1. 加入依赖jar包等等 (mybatis,mysql,log4日记等等,和log4文件)
2. 创建数据库表
3. 创建实体类,类名要跟表名对应
public class User {
private Integer id;
private String username;
private String password;
private Integer age;
private String gender;
private String email;
.....
}
4. 创建核心配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!--xml约束规定当前配置文件中使用哪些标签-->
<!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">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 通过读取核心配置文件,获取操作数据库对象,就可以直接执行sql,sql语句在映射文件中,
所以一定要把当前映射文件配置到核心配置文件中,才可以加载核心配置文件找到相对应映射文件中的sql去执行
-->
<!-- 引入mybatis的映射文件 -->
<mappers>
<mapper resource="mappers/UserMapper.xml"/>
</mappers>
</configuration>
5. 创建接口,接口名字要和映射文件名字相同
package com.atguigu.mybatis.mapper;
public interface UserMapper {
// 添加功能
int insertUser();
}
6. 创建映射文件,和接口名字保持一致
<?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.atguigu.mybatis.mapper.UserMapper">
<!-- 这里面写的就是查sql语句-->
<!-- int insertUser(); -->
<!-- id和接口中的方法名一致 -->
<insert id="insertUser">
insert into t_user values(null,'admin','123456',22,'男','31456@qq.com')
</insert>
</mapper>
7. 测试类
package com.atguigu.mybatis.test;
import com.atguigu.mybatis.mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class MybatisTest {
@Test
public void testInsert() throws IOException {
//获取核心配置文件的输入流 也就是读的功能
InputStream is = Resources.getResourceAsStream("mybatis-cofig.xml");
//获取SqlSessionFactoryBuilder对象 就像jdbc中的执行sql语句的一个入口
SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
//获取 SqlSessionFactory对象:遇到工厂模式的对象之后,把后面的Factory去掉,剩下部分一定是能够为我们提供的对象
//这输入流读取配置文件的输入流
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//获取sql的会话对象SqlSession(不会自动提交事务/如果设置为true就可以自动提交事务了),是MyBatis提供的操作数据库的对象
SqlSession sqlSession = sqlSessionFactory.openSession(true);
//获取UserMapper的代理实现类对象,, 因为是接口,不能实例化
//代理模式帮助我们创建当前mapper接口的代理实现类,
//getMapper:自动帮助我们创建mapper接口的实现类,并且自动找到相对应的sql语句执行
//怎么实现的:通过mapper接口的全类名找到映射文件,通过接口中的方法找到当前sql语句执行
//底层是通过sqlSession.insert实现的
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//调用mapper接口中的方法,实现添加用户信息的功能
int result = mapper.insertUser();
System.out.println("结果:"+result);
//提交事务
// sqlSession.commit();
sqlSession.close();
/**
* int result = mapper.insertUser();
* System.out.println("结果:"+result);
* sqlSession.close();
* 当前没有手动提交事务,虽然添加成功了,返回结果为1,但是表中还没成功,默认是回滚的,没效果
*/
}
}