话不多说,直接开整!
简单的说,MyBatis就是封装了JDBC,简化我们对DAO层进行的操作,具体可以看其他人的文章。
列一下我的版本
mysql:8.0.26
IDEA:2021.3
Maven:3.8.6
首先,一上来就是配置环境,MyBatis的核心配置文件,这个是非常重要的!!!(默认创建的都是Maven工程哈)
Maven的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>Mybatis_helloworld</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<packaging>jar</packaging>
<dependencies>
<!--MyBatis依赖 https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!--Mysql依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<!--Juint单元测试依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
MyBatis核心配置文件,一般都命名为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>
<!--连接数据库的配置信息-->
<environments default="development">
<environment id="development">
<!-- 事务处理 -->
<transactionManager type="JDBC">
</transactionManager>
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<!-- 这里我想大家都不陌生了,jdbc常见操作,驱动、url、数据库用户名、密码 -->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC"/>
<property name="username" value="****"/>
<property name="password" value="****"/>
</dataSource>
</environment>
</environments>
<!-- 引入mybatis的映射文件-->
<mappers>
<mapper resource="mappers/XXX.xml"/> <!--这里要写自己的映射文件 -->
</mappers>
</configuration>
好了,环境配置完就开始根据自己的数据库表创建实体类,以及实体类的对应接口
这里我创建的是User类
package com.yuuu.mybatis.user;
public class User {
private Integer id;
private String username;
private String password;
private Integer age;
private String gender;
private String email;
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
", email='" + email + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public User(Integer id, String username, String password, Integer age, String gender, String email) {
this.id = id;
this.username = username;
this.password = password;
this.age = age;
this.gender = gender;
this.email = email;
}
public User() {
}
}
User类对应的UserMapper接口,后面要通过此接口,在核心配置文件找到其映射的UserMapper.xml文件,进行数据库的操作
package com.yuuu.mybatis.mapper;
public interface UserMapper {
int insertUser();
}
写完UserMapper接口,下面开始写UserMapper.xml映射文件(这个文件才是编写sql,操作数据库的)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--映射文件里写sql语句-->
<mapper namespace="com.yuuu.mybatis.mapper.UserMapper"><!--第一个一致-->
<!--
mapper接口和映射文件要保证两个一致:
1.mapper 接口的全类名要和映射文件的namespace保持一致
2.mapper 接口中的方法名要和映射文件中的 sql 的id保持一致
-->
<!-- int insertUser(); UserMapper接口中的方法 -->
<insert id="insertUser"><!--第二个一致-->
insert into t_user VALUES(1,'yuuu','123456',18,'男','12345678@qq.com')
</insert>
</mapper>
这两个一致一定要注意!!!
大家看到这,是否还记得核心配置文件里的mapper?对咯,就是要写这个地址。
因此我这里就是
<mappers>
<!--自己的xml映射文件,注意路径-->
<mapper resource="mappers/UserMapper.xml"/>
</mappers>
这是我的文件目录,因此要在前面加一个mappers
下面开始编写测试类,每一步都有相应的注释,这里是固定格式,大家不用太过纠结。
package com.yuuu.mybatis;
import com.yuuu.mybatis.mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import org.apache.ibatis.io.Resources;
import java.io.IOException;
import java.io.InputStream;
public class MybatisTest {
@Test
public void testInsert() throws IOException {
//1.获得核心配置文件的输入流
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//2.实例化一个sqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//3.加载核心配置文件的输入流,得到sqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//4.利用sqlSessionFactory得到sqlSession,是Mybatis提供的操作数据库的对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//5.获取UserMapper的代理实现类对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//6.调用mapper接口中的方法,实现添加用户的功能
int result = mapper.insertUser();
System.out.println(result);
//7.提交事务,MyBatis需要自己手动提交事务
sqlSession.commit();
//8.关闭sqlSession会话
sqlSession.close();
}
}
让我们看看是否实现了添加用户的操作!
可以看到,数据库中已经完成了相应操作。
下面说大家第一次搭建环境跑项目可能会遇到的问题:
maven中配置了相应依赖,但是还是无法使用。比如说我这里导入了mybatis,但是在写代码时还是无法使用,这里建议手动导入,mysql同理
上面导包的问题,可能是高版本IDEA的bug,因为maven可以正常导入本地仓库,IDEA可以识别但是无法正常使用,如果有需要的话可以换2019版的IDEA
初来乍到,还请大家多多斧正,在此拜谢!
小声bb:有什么问题我们可以一起探讨,共同进步哦!