mybatis环境的搭建
一:在idea中创建一个空工程,创建一个maven模块
在模块中添加mybatis、mysql的依赖,并且添加一个编译的插件
<!--mybatis.xml-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--将resource中的xml文件编译到路径中-->
<resources>
<resource>
<directory>src/main/java</directory><!-- 所在的目录 所在的目录 所在的目录 -->
<includes><!-- 包括目录下的 包括目录下的 包括目录下的 .properties,.xml 文件都会扫描到 文件都会扫描到 文件都会扫描到 文件都会扫描到 -->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
二:在模块中创建好包结构,实体类,dao接口
项目结构如下:
实体类User:
package top.xiongzuqiang.domain;
/**
* @author xzq
* @create 2021-01-27 16:39
*/
public class User {
private Integer id;
private String username;
private String password;
private String email;
public User(Integer id, String username, String password, String email) {
this.id = id;
this.username = username;
this.password = password;
this.email = email;
}
public User() {
}
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 String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", email='" + email + '\'' +
'}';
}
}
UserMapper接口:
package top.xiongzuqiang.dao;
import top.xiongzuqiang.domain.User;
/**
* @author xzq
* @create 2021-01-27 16:38
*/
public interface UserMapper {
/**
* 插入一个新的用户
* @param user
* @return
*/
int insertUser(User user);
}
三:在src下面的resource目录下面创建mybatis.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>
<!--配置mybatis的日志输出,配置之后,执行操作时,会输出日志-->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
<!-- 配置连接数据库的相关信息,其中environment可以有多个,但是id要不一样,default指定到一个生效-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/book"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- mapper指定到对应mapper文件的路径,这个路径是类路径,就是在idea中的target/classes-->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
四:编写对应dao接口的mapper文件
<?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 namespace="top.xiongzuqiang.dao.UserMapper">
<!--id指的是方法名,必须和方法名一致-->
<insert id="insertUser">
insert into t_user(id, username, password, email) values(#{id}, #{username}, #{password}, #{email})
</insert>
</mapper>
五:测试
UserTest测试类:
package top.xiongzuqiang;
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.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import top.xiongzuqiang.dao.UserMapper;
import top.xiongzuqiang.domain.User;
import java.io.IOException;
import java.io.InputStream;
/**
* @author xzq
* @create 2021-01-27 16:44
*/
public class TestUser {
private static InputStream stream;
private static SqlSession sqlSession;
@BeforeClass
public static void before() throws IOException {
//获取xml
stream = Resources.getResourceAsStream("mybatis.xml");
//通过SqlSessionFactoryBuild创建SqlSessionFactory
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(stream);
//通过SQLSessionFactory获取SqlSession
sqlSession = build.openSession();
}
@Test
public void testInsertUser(){
//获取dao
UserMapper u = sqlSession.getMapper(UserMapper.class);
int i = u.insertUser(new User(14, "aaa", "abc", "abc@qq.com"));
System.out.println(i);
}
@AfterClass
public static void after() throws IOException {
//关闭资源
sqlSession.close();
stream.close();
}
}
总结:
1:配置mybatis.xml的mybatis的配置文件,在这个文件中,声明我们项目对应的mapper文件
2:在mapper文件中配置相对应的mapper接口
3:(1):在测试的时候首先由SqlSessionFactoryBuilder获取SQLSessionFactory;
(2):再由SqlSessionFactory获取SqlSession;
(3):由SqlSession获取到对应的mapper接口,然后执行对应的方法。