image-20211103190702567.png

准备数据

create table user (
id int primary key auto_increment,
username varchar(20) not null,
birthday date,
sex char(1) default ‘男’,
address varchar(50)
);

insert into user values (null, ‘孙悟空’,’1980-10-24’,’男’,’花果山水帘洞’);
insert into user values (null, ‘白骨精’,’1992-11-12’,’女’,’白虎岭白骨洞’);
insert into user values (null, ‘猪八戒’,’1983-05-20’,’男’,’福临山云栈洞’);
insert into user values (null, ‘蜘蛛精’,’1995-03-22’,’女’,’盤丝洞’);

select * from user;

创建maven工程,导入坐标

image.png

  1. <!--mybatis核心包--><br /> <dependency><br /> <groupId>org.mybatis</groupId><br /> <artifactId>mybatis</artifactId><br /> <version>3.5.0</version><br /> </dependency><br /> <!--logback日志包--><br /> <dependency><br /> <groupId>org.slf4j</groupId><br /> <artifactId>slf4j-api</artifactId><br /> <version>1.7.26</version><br /> </dependency><br /> <dependency><br /> <groupId>ch.qos.logback</groupId><br /> <artifactId>logback-core</artifactId><br /> <version>1.2.3</version><br /> </dependency><br /> <dependency><br /> <groupId>ch.qos.logback</groupId><br /> <artifactId>logback-classic</artifactId><br /> <version>1.2.3</version><br /> </dependency><br /> <!--mysql驱动--><br /> <dependency><br /> <groupId>mysql</groupId><br /> <artifactId>mysql-connector-java</artifactId><br /> <version>5.1.18</version><br /> </dependency><br /> <br /> <dependency><br /> <groupId>junit</groupId><br /> <artifactId>junit</artifactId><br /> <version>4.12</version><br /> <scope>test</scope><br /> </dependency>

在resources下面创建核心配置文件: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”>




















在resources下创建映射文件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”>



在resources下 导入logback.xml文件

<?xml version=”1.0” encoding=”UTF-8”?>




System.out


%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %c [%thread] : %msg%n

  1. <!-- File是输出的方向通向文件的 --><br /> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><br /> <encoder><br /> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern><br /> <charset>utf-8</charset><br /> </encoder><br /> <!--日志输出路径--><br /> <file>C:/code/itheima-data.log</file><br /> <!--指定日志文件拆分和压缩规则--><br /> <rollingPolicy<br /> class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><br /> <!--通过指定压缩文件名称,来确定分割文件方式--><br /> <fileNamePattern>C:/code/itheima-data2-%d{yyyy-MMdd}.log%i.gz</fileNamePattern><br /> <!--文件拆分大小--><br /> <maxFileSize>1MB</maxFileSize><br /> </rollingPolicy><br /> </appender>
  2. <!--
  3. level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF<br /> , 默认debug<br /> <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。<br /> --><br /> <root level="ALL"><br /> <appender-ref ref="CONSOLE"/><br /> <appender-ref ref="FILE" /><br /> </root><br /></configuration>

新建UserMapper接口:

public interface UserMapper {
/*
查询所有的用户
/
List findAllUsers();
}

创建实体类User:

package com.itheima.sh.pojo;
import java.sql.Date;
public class User {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;

public User() {<br />    }

public User(Integer id, String username, Date birthday, String sex, String address) {<br />        this.id = id;<br />        this.username = username;<br />        this.birthday = birthday;<br />        this.sex = sex;<br />        this.address = address;<br />    }

public Integer getId() {<br />        return id;<br />    }

public void setId(Integer id) {<br />        this.id = id;<br />    }

public String getUsername() {<br />        return username;<br />    }

public void setUsername(String username) {<br />        this.username = username;<br />    }

public Date getBirthday() {<br />        return birthday;<br />    }

public void setBirthday(Date birthday) {<br />        this.birthday = birthday;<br />    }

public String getSex() {<br />        return sex;<br />    }

public void setSex(String sex) {<br />        this.sex = sex;<br />    }

public String getAddress() {<br />        return address;<br />    }

public void setAddress(String address) {<br />        this.address = address;<br />    }

@Override<br />    public String toString() {<br />        return "User{" +<br />                "id=" + id +<br />                ", username='" + username + '\'' +<br />                ", birthday=" + birthday +<br />                ", sex='" + sex + '\'' +<br />                ", address='" + address + '\'' +<br />                '}';<br />    }<br />}<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/26700116/1655815040201-5ec25c68-e99b-4812-845e-cf12c033dcc6.png#clientId=u35202389-781e-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=283&id=u7799178b&margin=%5Bobject%20Object%5D&name=image.png&originHeight=283&originWidth=804&originalType=binary&ratio=1&rotation=0&showTitle=false&size=36704&status=done&style=none&taskId=uaf30dfbe-d35a-46f0-9571-2f0c85d423b&title=&width=804)<br />public class MyBatisTest01 {<br />    //从MySQL中查询所有的用户<br />    @Test<br />    public void test02() throws Exception{<br />        //1.从xml文件中构建SqlSessionFactory<br />        //定义核心配置文件路径<br />        String resource = "mybatis-config.xml";<br />        //加载核心配置文件获取输入流<br />        InputStream inputStream = Resources.getResourceAsStream(resource);<br />        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

    //2.从SqlSessionFactory中获取session<br />        SqlSession session = sqlSessionFactory.openSession();

    //3.使用session获取接口的动态代理对象<br />        UserMapper mapper = session.getMapper(UserMapper.class);<br />        //4.使用接口对象调用接口中的方法<br />        List<User> userList = mapper.findAllUsers();<br />        //5.遍历集合<br />        for (User user : userList) {<br />            System.out.println(user);<br />        }<br />        //关闭会话<br />        session.close();<br />    }<br />}

image.png