您现在的位置是:首页 > 正文

MyBatis框架搭建快速入门

2024-04-01 04:49:29阅读 1

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

网站文章

  • [NODE之18]Server

    /**http.Server 类 * Created by liyanq on 17/4/1. *//*express中没有对server类进行扩展,这点还比较好~~ * express框架中,app.listen是获得server的主要方法(可能是唯一的~),相当于http.createSever * 继承:server:Server->events.EventEmitter *

    2024-04-01 04:49:22
  • mongodb时间戳转换成格式化时间戳 热门推荐

    db.pay_order.find({&quot;id&quot;:&quot;5332336532&quot;},{&quot;tradeNo&quot;:true,&quot;status&quo...

    2024-04-01 04:49:13
  • Hive中删除表数据的几种方式

    在内部表中 仅删除表中数据,保留表结构 方法一 truncate table 表名;(truncate用于删除所有的行,这个行为在hive元存储删除数据是不可逆的) truncate 不能删除外部表!...

    2024-04-01 04:49:08
  • 操作系统存储管理习题

    1.主存与辅存间频繁的页面置换现象被称为:系统抖动 2.把进程地址空间中使用的逻辑地址变成内存中物理地址的过程称为:重定位 3.在可变分区存储管理中,最佳适应分配算法要求对空闲区表项按尺寸从小到大进行...

    2024-04-01 04:48:27
  • Linux系统编程:进程信号的保存和阻塞

    Linux系统编程:进程信号的保存和阻塞

    本文介绍了信号的保存和阻塞的相关概念和操作方法

    2024-04-01 04:48:19
  • xss攻击

    xss攻击

    之前介绍过csrf攻击,那个是通过编写恶意页面来通过跨域请求来调用用户的api现在介绍的是xss攻击,这种攻击和csrf不同的是,恶意脚本是注入到了用户要访问页面的本身,而不是一个恶意页面xss攻击按攻击方式可以分为2类:通过url和通过数据库1.非持久性(一般通过url)举个栗子:正常发送消息:http://www.test.com/message.php?se...

    2024-04-01 04:48:12
  • 谷歌翻译可用地址

    谷歌翻译可用地址

    谷歌翻译可用地址

    2024-04-01 04:47:32
  • RabbitMQ实现延迟消息

    RabbitMQ实现延迟消息

    本文主要讲解mall整合RabbitMQ实现延迟消息的过程,以发送延迟消息取消超时订单为例。

    2024-04-01 04:47:24
  • CentOS7查看开放端口命令及开放端口号

    CentOS7查看开放端口命令及开放端口号

    2024-04-01 04:47:17
  • 遇到报错 ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26‘ not found

    遇到报错 ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26‘ not found

    大多解决方法:需要将/usr/lib/x86_64-linux-gnu/libstdc++.so.6下对应的软连接进行修改替换。这里find后面的路径一般是根据自己服务器中,用户文件所在路径进行修改,...

    2024-04-01 04:46:40