2. The first Mybatis program
Idea: build environment --> import Mybatis --> write code --> test
2.1 Build environment
build database
create database `mybatis`;
use `mybatis`;
create table `user`(
`id` int (20) not null PRIMARY key,
`name` VARCHAR(30) DEFAULT null,
`pwd` VARCHAR(30) DEFAULT null
)ENGINE=INNODB DEFAULT CHARSET=utf8;
select * from user;
insert into `user` (`id`,`name`,`pwd`) VALUES
(1,'酱油','123456'),
(2,'张三','123456'),
(3,'李四','123456')
New Project
1. Create a new normal maven project
2. Delete the src directory
3. Import maven dependencies
<?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>
<groupId>com.jiang</groupId>
<artifactId>Mybatis-Study</artifactId>
<version>1.0-SNAPSHOT</version>
<!--导入依赖-->
<dependencies>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
2.2 Create a module
Write the core configuration file of mybatis
<?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核心配置文件-->
<configuration>
<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/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>
Write mybatis tool class
package com.jiang.util;
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 java.io.IOException;
import java.io.InputStream;
//sqlSessionFactory -->sqlSession
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static{
try {
//使用Mybatis第一步:获取sqlSessionFactory对象
String resource="mybatis-config.xml";
InputStream inputStream = null;
inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了SqlSessionFactory,顾名思义,我们就可以从中获得SqlSession的实例了
//SqlSession完全包含了面向数据库执行SQL命令所需的所有方法
public static SqlSession getSqlSesssion(){
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
}
2.3, write code
Entity class
package com.jiang.pojo;
import lombok.Data;
import lombok.RequiredArgsConstructor;
@Data
@RequiredArgsConstructor
public class user {
private int id;
private String name;
private String pwd;
}
Dao interface
package com.jiang.dao;
import com.jiang.pojo.User;
import java.util.List;
public interface UserDao {
List<User> getUserList();
}
The interface implementation class is changed from the original UserDaoImpl to a Mapper configuration file
<?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=绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.jiang.dao.UserDao">
<!--id为dao/mapper层内函数的名字,resultType返回结果-->
<select id="getUserList" resultType="com.jiang.pojo.User">
select * from mybatis.user;
</select>
</mapper>
2.4. Test
What is Mapper Registry?
Register mappers in the core configuration file
<!--每一个Mapper.XML都需要在Mybatis核心配置文件中注册-->
<mappers>
<mapper resource="com/jiang/dao/UserMapper.xml"></mapper>
</mappers>
Junit test
package com.jiang.dao;
import com.jiang.pojo.User;
import com.jiang.util.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserDaoTest {
@Test
public void test(){
//第一步:获得SqlSession对象
SqlSession sqlSesssion = MybatisUtils.getSqlSesssion();
//执行SQL
//方式一:getMapper
UserDao userDao = sqlSesssion.getMapper(UserDao.class);
List<User> userList = userDao.getUserList();
//方式二:
List<User> userList = sqlSesssion.selectList("com.jiang.dao.UserDao.getUserList");
for (User user:userList) {
System.out.println(user);
}
//关闭SqlSession
sqlSesssion.close();
}
}
possible problems
1. The configuration file is not registered
2. Binding interface error
3. The method name is wrong
4. The return type is wrong
5. Maven export resource problem
https://www.bilibili.com/video/BV1NE411Q7Nx?p=3&spm_id_from=pageDriver