mybatis快速入门案例详解

案例需求:通过mybatis查询数据库user表的所有记录,封装到User对象中,打印到控制台上

步骤分析:

1. 创建数据库及user
2. 创建maven工程,导入依赖(MySQL驱动、mybatisjunit
3. 编写User实体类
4. 编写UserMapper.xml映射配置文件(ORM思想)
5. 编写SqlMapConfig.xml核心配置文件
  数据库环境配置
  映射关系配置的引入(引入映射配置文件的路径)
6. 编写测试代码
   6.1.加载核心配置文件
   6.2.获取sqlSessionFactory工厂对象
   6.3.获取sqlSession会话对象
   6.4.执行sql
   6.5.打印结果
   6.6.释放资源

代码详解:

1. 创建数据库及user

CREATE DATABASE `mybatis_db`;
USE `mybatis_db`;
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(32) NOT NULL COMMENT '用户名称',
`birthday` DATETIME DEFAULT NULL COMMENT '生日',
`sex` CHAR(1) DEFAULT NULL COMMENT '性别',
`address` VARCHAR(256) DEFAULT NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
-- insert....
INSERT INTO `user`(`id`,`username`,`birthday`,`sex`,`address`) VALUES (1,'子慕','2020-11-11 00:00:00','男','北京海淀'),(2,'应颠','2020-12-12 00:00:00','男','北京海淀'); 

2. 创建maven工程,导入依赖(MySQL驱动、mybatisjunit

  创建maven工程详见上篇文章

  导入依赖包

<!--指定编码和版本-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<java.version>1.11</java.version>
<maven.compiler.source>1.11</maven.compiler.source>
<maven.compiler.target>1.11</maven.compiler.target>
</properties>
<!--mybatis坐标--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.4</version> </dependency>
<!--mysql驱动坐标--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> <scope>runtime</scope> </dependency>
<!--单元测试坐标--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> 

3) 编写User实体

package com.lagou.dao;

import java.util.Date;

public class User {

    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;

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

    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 Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
} 

4) 编写UserMapper映射文件 

  新建file文件,文件名称可以随便起,此处起名为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 namespace="UserMapper">
    <!--namespace:命名空间,与id属性共同构成唯一标识 namespace.id 如user.fingAll-->
    <!--resultType:返回结果类型(自动映射封装):要封装的实体全路径-->
    
    <select id="findAll" resultType="com.lagou.dao.User">
        select * from user   -- 此处不写封号
    </select>
    
    
</mapper>

5) 编写MyBatis核心文件  

  新建file文件,文件名称可以随便起,此处起名为sqlMapConfig.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>

    <!--运行环境配置-->
    <environments default="development">
        <!--使用MYSQL环境-->
        <environment id="development">
            <!--当前的事务管理器是JDBC-->
            <transactionManager type="JDBC"></transactionManager>

            <!--数据源信息POOLED:使用mybatis的连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://mybatis_db"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!--加载映射配置-->
    <mappers>
        <mapper resource="UserMapper.xml"></mapper>
    </mappers>


</configuration>

 

6) 编写测试类  

package com.lagou.Test;

import com.lagou.dao.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.InputStream;
import java.util.List;

public class MytabisTest {
    /**
     * 快速入门测试方法
     */
    @Test
    public void mybatisQuickStart() throws IOException {

        //1.加载核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");

        //2.获取SQLSessionFactory工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

        //3.获取SQLSession会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //4.执行SQL 参数:statementid :namespace.id
        List<User> users = sqlSession.selectList("UserMapper.findAll");

        //5.遍历打印结果
        for (User user : users) {
            System.out.println(user);
        }

        //6.关闭资源
        sqlSession.close();

    }
}

知识小结

  1. 创建mybatis_db数据库和user

  2. 创建项目,导入依赖

  3. 创建User实体类

  4. 编写映射文件UserMapper.xml

  5. 编写核心文件SqlMapConfig.xml

  6. 编写测试类 

posted @ 2021-01-19 23:38  咕噜_咕噜  阅读(104)  评论(0编辑  收藏  举报