MyBatis框架搭建快速入门

1.什么是MyBatis?

  • MyBatis是一款优秀的持久层开发框架,用于简化JDBC开发
  • 使开发人员只专注于SQL语句,而无需关注JDBC的API执行细节。

持久层

  • 负责将数据保存到数据库的那一层代码
  • JavaEE三层架构:表现层、业务层、持久层

框架

  • 框架就是一个半成品,是一套可重复使用的、通用的、软件基础代码模型
  • 在框架的基础上构建软件使得编写更加高效、规范、通用、可扩展

2.为什么要使用MyBatis?

 

3.MyBatis框架创建

步骤

  1. 创建user表,添加数据
  2. 创建模块,导入坐标
  3. 编写MyBatis核心文件 (替换连接信息,解决硬编码问题)
  4. 编写SQL映射文件(统一管理SQL语句,解决硬编码问题)
  5. 编码
    1. 定义POJO类
    2. 加载核心配置文件,获取SqlSessionFactory对象
    3. 获取SqlSession对象,执行SQL语句
    4. 释放资源   

入门_MyBatis中文网icon-default.png?t=M666https://mybatis.net.cn/getting-started.html

4.MyBatis案例

1.导入所需依赖

创建一个maven项目,在配置文件pom.xml导入MyBatis依赖包、JDBC依赖包以及其他依赖

<dependencies>
        <dependency>
            <!--添加MyBatis依赖-->
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>

        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>

        <!--junit 单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!--添加slf4j日志api-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.20</version>
        </dependency>
        <!--添加logback-classic依赖-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!--添加logback-core依赖-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>mybatis-demo</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

2.编写MyBatis配置文件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>
    <!--类型别名-->
    <typeAliases>
        <package name="com.pojo"/>
    </typeAliases>
    <!--
    environments:配置数据库连接环境信息,可以配置多个environment,通过default属性来切换不同的environment
    -->
    <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/STUDENT?useSSL=false&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!--Mapper代理方式-->
        <package name="com.mapper"/>
    </mappers>
</configuration>

3.编写StudentMapper接口

public interface StudentMapper {
    List<student> selectAll();
}

4.编写接口的实现类Mapper映射文件

<mapper namespace="com.mapper.StudentMapper">
    <resultMap id="studentResultMap" type="student">
        <!--数据库表的字段名称 和 实体类的属性名称 不一致, 则不能自动封装数据
        
        *resultMap:
        id:唯一标识
        type:映射的类型,支持别名

        1.定义<resultMap>标签
        2.在<select>标签中,使用resultMap属性替换resultType属性
        -->
        <result column="class" property="classes"></result>
    </resultMap>
    <!--id表示接口的方法 -->
    <select id="selectAll" resultMap="studentResultMap">
        select *
        from student;
    </select>
</mapper>

5.编写pojo对象并自动创建getter和setter方法

public class student {
    private String name;
    private String dept;
    private String classes;
    private String sno;
    private String age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDept() {
        return dept;
    }

    public void setDept(String dept) {
        this.dept = dept;
    }

    public String getClasses() {
        return classes;
    }

    public void setClasses(String classes) {
        this.classes = classes;
    }

    public String getSno() {
        return sno;
    }

    public void setSno(String sno) {
        this.sno = sno;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "student{" +
                "name='" + name + '\'' +
                ", dept='" + dept + '\'' +
                ", classes='" + classes + '\'' +
                ", sno='" + sno + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}

6.加载核心配置文件,获取SQLSessionFactory

//加载mybatis的核心配置文件,获取SqlSessionFactory
String resource = "mybatis-config.xml";

7.获取SqlSession对象,执行SQL语句

//获取SqlSession对象,用于执行sql
SqlSession sqlSession = sqlSessionFactory.openSession();

8. 获取UserMapper的代理对象

//获取UserMapper的代理对象
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
List<student> students = studentMapper.selectAll();

9.释放资源

//释放资源
sqlSession.close();

10.编写测试方法

 @Test
    //查询所有数据
    public void testSelectAll() throws IOException {
        //1.获取sqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2.获取sqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //3.获取mapper接口的代理对象
        StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);

        //4.执行方法
        List<student> students = studentMapper.selectAll();
        System.out.println(students);

        //5.释放资源
        sqlSession.close();
    }

猜你喜欢

转载自blog.csdn.net/weixin_52254591/article/details/126361134