【Mybatis】快速上手以及避坑详解,一文就够

该博客针对MyBatis配置进行细致教学。介绍了完整项目结构,主体搭建包括数据库、实体类、映射和工具类配置,重点讲解MyBatis配置,如主配置文件和映射xml文件创建,最后通过测试验证配置成功,可查询到数据。


快速上手

鉴于目前诸多 mybatis 配置博客都讲的模棱两可,这里将就我们可能出现的错误进行细致入微的配置教学!


完整项目结构

很多博客上来就堆砌代码,连在哪创建文件都只字不提,实在是高明!

此为本快速上手项目的完整目录架构,你最终创建的文件也应该是这样的!

在这里插入图片描述


主体搭建

第一步:配置数据库

建议使用 navicat,可视化操作事务,光速建表方便快捷

我们新建数据库 springboot,其下构建一表 student,其中包含 id,name,age


第二步:配置实体类 Student (位置:com.zhiyiyi.mybatis.pojo)

很简单,直接编写对应数据表内的三个属性即可,别忘了 setter,getter,tostring,construction

package com.zhiyiyi.mybatis.pojo;

public class Student {
    private int id;
    private String name;
    private int age;

    public Student() {
    }

    public Student(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    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;
    }
}


第三步:映射 StudentMapper (位置:com.zhiyiyi.mybatis.mapper)

非常简单,我们只需要查询出 student 表中的每一行的内容就好了

mybatis 的 mapper 类似于 DAO

package com.zhiyiyi.mybatis.mapper;

import com.zhiyiyi.mybatis.pojo.Student;

import java.util.List;

public interface StudentMapper {
    List<Student> getStudents();
}


第四步:工具类 MybatisUtil(位置:com.zhiyiyi.mybatis.utils)

没啥可说的,复制黏贴就好了

package com.zhiyiyi.mybatis.utils;

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.InputStream;

public class MybatisUtil {
    private static SqlSessionFactory factory;

    static {
        try {
            String source = "mybatis-config.xml";
            InputStream is = Resources.getResourceAsStream(source);
            factory = new SqlSessionFactoryBuilder().build(is);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSession() {
        return factory.openSession();
    }
}


mybatis 配置

到重点了,这里每一步都要仔细做,不然直接前功尽弃!!!


第一步:新建 mybatis-config.xml (位置:resource)

这是 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>

    <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/springboot?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>

            </dataSource>
        </environment>
    </environments>

    <!-- 请把name中的值设置为你存放映射文件mapper的目录!路径千万仔细不能写错!!! -->
    <mappers>
        <package name="com.zhiyiyi.mybatis.mapper"/>
    </mappers>
</configuration>

第二步:创建对应映射 xml 文件(位置:com.zhiyiyi.mybatis.mapper)

这里有坑!!!
我们在创建 com.zhiyiyi.mybatis.mapper 这一连串的嵌套包时千万不要直接一次性创建,请分开来一个个创建
因为 mapper 没法识别一次性创建的文件夹!

配置的注意事项写在注释里面了

<?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写我们需要执行映射的mapper.java文件! -->
<mapper namespace="com.zhiyiyi.mybatis.mapper.StudentMapper">
    <!-- id对应mapper中的方法名称 -->
    <!-- 因为我们查询结果是一堆Student类型的对象,所以resultType需要指定实体类Student -->
    <!-- 别告诉我下面的SQL你看不懂。。。我不解释了 -->
    <select id="getStudents" resultType="com.zhiyiyi.mybatis.pojo.Student">
        select *
        from student;
    </select>
</mapper>

测试!完成!

非常好!我们已经完成了基础 mybatis 的全部配置,现在就是验证能否查询到数据的时刻了

随便创建一个测试类,填入如下代码

import com.zhiyiyi.mybatis.mapper.StudentMapper;
import com.zhiyiyi.mybatis.pojo.Student;
import com.zhiyiyi.mybatis.utils.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class MybatisTest {
    @Test
    public void firstMB() {
        SqlSession session = MybatisUtil.getSession();
        StudentMapper studentMapper = session.getMapper(StudentMapper.class);
        List<Student> students = studentMapper.getStudents();

        for (Student student : students) {
            System.out.println(student);
        }

        session.close();
    }
}


从输出内容上看,我们已经完美的取得了数据!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhillerDev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值