一、创建数据库与表
创建数据库testdb,然后创建用户表t_user,并插入3条记录
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `t_user` VALUES ('1', '李洪刚', '20', '江阳区嘉裕花园3栋四楼15#');
INSERT INTO `t_user` VALUES ('2', '王云华', '30', '纳溪区大渡镇红鱼村三大队');
INSERT INTO `t_user` VALUES ('3', '郑小翠', '21', '江阳区老窖花园2栋五楼15号');
二、案例演示MyBatis基本使用
(一)创建Maven项目 - MyBatisDemo
(二)在pom文件里添加相应的依赖
<?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>net.hw.mybatis</groupId>
<artifactId>MyBatisDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
</project>
添加了新的依赖后,刷新,并查看
(三)创建用户实体类
package net.lbj.mybatis.bean;
/**
* 功能:用户实体类
*/
public class User {
private int id;
private String name;
private int age;
private String address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", address='" + address + '\'' +
'}';
}
}
(四)创建用户实体关系映射配置文件
在resources目录中创建mapper子目录,再创建UserMapper.xml文件
(五)创建MyBatis配置文件
在resources目录中创建mybatis-config.xml
(六)创建日志属性文件
在resources目录里创建log4j.properties文件
(七)创建用户映射器接口
创建net.lbj.mybatis.mapper包,然后在包里创建用户映射器接口 - UserMapper
(八)创建测试方法
1、(测试用户操作)在test/java目录里创建net.lbj.mybatis.bean包,然后在包里创建测试类 - TestUserOperation
package net.lbj.mybatis.bean;
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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
/**
* 功能:测试用户操作
* 日期:2021/03/03
*/
public class TestUserOperation {
private SqlSession sqlSession; //SQL会话
@Before
public void init() {
try {
//读取MyBatis配置文件作为字符输入流
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
//基于MyBatis配置文件构建SQL会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
//利用SQL会话工厂获取SQL会话
sqlSession = factory.openSession();
//提示用户SQL会话对象创建成功
System.out.println("sqlSession对象已创建。");
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void testFindById() {
int id = 7;
User user = sqlSession.selectOne("net.lbj.mybatis.mapper.UserMapper.findById",id);
if (user != null) {
System.out.println(user);
} else {
System.out.println("编号为[" + id + "]的用户未找到。");
}
}
@Test
public void testFindAll() {
List<User> users = sqlSession.selectList("net.lbj.mybatis.mapper.UserMapper.findAll");
users.forEach(user -> System.out.println(user));
}
@After
public void destroy() {
//关闭SQL对话
sqlSession.close();
//提示用户SQL会话对象关闭
System.out.println("sqlSession对象已关闭。");
}
}
2、(测试用户映射器接口——更简单)在test/java里创建net.lbj.mybatis.mapper包,然后在包里创建测试类 - TestUserMapper
package net.lbj.mybatis.mapper;
import net.lbj.mybatis.bean.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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
/**
*设置用户映射器接口
*/
public class TestUserMapper {
private SqlSession sqlSession; //SQL会话
private UserMapper userMapper; //用户映射器
@Before
public void init() {
try {
//读取MyBatis配置文件作为字符输入流
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
//基于MyBatis配置文件构建SQL会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
//利用SQL会话工厂获取SQL会话
sqlSession = factory.openSession();
//利用SQL会话获取用户映射器对象
userMapper = sqlSession.getMapper(UserMapper.class);
//提示用户SQL会话对象创建成功
System.out.println("sqlSession对象已创建。");
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void testFindById() {
int id = 1;
User user = userMapper.findById(id);
if (user != null) {
System.out.println(user);
} else {
System.out.println("编号为[" + id + "]的用户未找到。");
}
}
@Test
public void testFindAll() {
List<User> users = userMapper.findAll();
users.forEach(user -> System.out.println(user));
}
@After
public void destroy() {
//关闭SQL对话
sqlSession.close();
//提示用户SQL会话对象关闭
System.out.println("sqlSession对象已关闭。");
}
}
(九)运行结果
三、遇到的问题
问题一:users.forEach(user -> System.out.println(user));报错
解决方法:
问题二:信息显示不出来
原因:用户实体类中少写了toString()方法