准备:
需要提前安装好以下工具软件
(1) IDEA 2021
(2)Java 1.8
(3)数据库 MySQL 5.7 (SQLyog 或 Navicat)
(4)SQL yog 或 Navicat (用于操作MySQL数据库)
步骤:
1 在 MySQL 中创建数据库 mybatisdemo,编码为 utf8
2 新建表:
USE mybatisdemo
CREATE TABLE users(
uid INT PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(20) NOT NULL,
uage INT NOT NULL
);
INSERT INTO users(uid,uname,uage) VALUES(NULL,'张##',25),(NULL,'李##',23),(NULL,'王##',23);
3 IDEA 创建 maven工程, 点击 File 菜单 -- New 菜单-- Project
选择 Maven -- Project SDK 1.8
New Project,输入 Name, 选择 Location,输入 GroupId
选择 This Window
完成之后如下图所示:
4 在 src - main - java 下新建 package, 名字为 com.mybatisdemo.pojo
在 com.mybatisdemo.pojo 中新建实体类 User.java
使用IDEA,其中的 set 和 get 可以快速生成。
package com.mybatisdemo.pojo;
public class User {
private int uid; //用户id
private String uname; //用户姓名
private int uage; //用户年龄
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public int getUage() {
return uage;
}
public void setUage(int uage) {
this.uage = uage;
}
}
5 在 src - main - resources
在 src - main - resources - mapper 下建文件 UserMapper.xml (映射文件)
<?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">
<!-- mapper 为映射的根节点-->
<!-- mapper 为映射的根节点,namespace 指定Dao接口的完整类名,通常设置为对应实体类的全限定类名。
mybatis 会依据这个接口动态创建一个实现类去实现这个接口,
而这个实现类是一个Mapper对象-->
<mapper namespace="com.mybatisdemo.pojo.User">
<!--id ="接口中的方法名"
parameterType="传入的参数类型"
resultType = "返回实体类对象,使用包.类名"-->
<select id="findById" parameterType="int"
resultType="com.mybatisdemo.pojo.User">
select * from users where uid = #{id}
</select>
</mapper>
6 在 src - main - resources 下新建 db.properties
mysql.driver=com.mysql.cj.jdbc.Driver
mysql.url=jdbc:mysql://127.0.0.1:3306/mybatisdemo?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
mysql.username=root
mysql.password=123456
7 在 src - main - resources 下新建 mybatis-config.xml (核心配置文件,习惯上命名为 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>
<!-- 环境配置 -->
<!-- 加载类路径下的属性文件 -->
<properties resource="db.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 数据库连接相关配置 ,db.properties文件中的内容-->
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
</environments>
<!-- mapping文件路径配置 -->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
8 src - test - java - 下建 package, 名字为Test
src - test - java - Test 下建立类文件 UserTest.java
package Test;
import com.mybatisdemo.pojo.User;
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.Reader;
public class UserTest {
@Test
public void userFindByIdTest() {
//读取文件名
String resources = "mybatis-config.xml";
//创建流
Reader reader = null;
try {
//读取mybatis-config.xml文件内容到reader对象中
reader = Resources.getResourceAsReader(resources);
} catch (IOException e) {
e.printStackTrace();
}
//初始化mybatis数据库,创建SqlSessionFactory类的实例
SqlSessionFactory sqlMapper = new
SqlSessionFactoryBuilder().build(reader);
//创建SqlSession实例
SqlSession session = sqlMapper.openSession();
//传入参数查询,返回结果
User user = session.selectOne("findById", 1);
//输出结果
System.out.println(user.getUname());
//关闭session
session.close();
}
}
9 修改 pom.xml 文件
<?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.mybatisdemo</groupId>
<artifactId>mybatis_demo01</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!-- <scope>test</scope>-->
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
10 最终的文件结构:
11 在 UserTest.java 的 userFindByIdTest 上右键,Run :
源代码:
链接:https://pan.baidu.com/s/1LAIYzav5X30oTzIjxMhElA
提取码:1234
===============================================
补充:
mapper里面的namespace?
参考:
session.selectOne("findById", 1);
参考:
如果多个类(接口)中有同名的 findById 方法怎么办?
===============================================
REF
https://mybatis.org/mybatis-3/zh/getting-started.html
https://www.w3cschool.cn/mybatis/mybatis-dyr53b5w.html
黑马程序员书籍