SSM 的Mybatis框架

本文介绍了Mybatis作为持久层框架的基本概念,包括其与Hibernate的区别。Mybatis是一个支持普通SQL查询、存储过程的ORM框架,允许手动配置SQL并进行性能优化。文中详细讲解了Mybatis的下载和在IDEA中的应用步骤,包括创建项目、导入库、配置约束文档、映射文件及测试类的建立,同时指出了常见错误示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis下载网址:https://github.com/mybatis-3/releases

一 、什么是Mybatis

Mybatis 是一个支持谱通SQL查询、存储过程以及高级的映射的持久层框架,底层就是JDBC封装组件。

二、什么是ORM框架 ?
ORM就是一种为了解决面向对象与关系型数据库中数据类型不匹配的技术,通过描述java对象与数据库表之间的映射关系,自动将java应用程序中的对象持久化到关系型数据库的表中。
java编写数据类型 与数据库类型的关系
在这里插入图片描述
关系映射:https://blog.youkuaiyun.com/gao_jian1/article/details/7950046

Mybatis 框架也被称ORM (object/Relation Mapper,及对相关系映射)框架。

Hibernate 和Mybatis的区别?

1.Hibernate:是一个全表映射框架。只需定义持久对象到数据库表的映射关系,
特点:自动生成对应的Sql 调用jDBC接口执行
多表关联,SQL查询查,不支持存储过程,不通过优化SQL来优化性能
使用:不复杂对性能不高的项目
2.MyBatis:一个半自动映射的框架
手动匹配POJO、SQL和映射关系,工作量大
可以配置SQl并优化SQL,通过配置决定SQL的映射规则,支持存储过程使用:复杂优化性能的项目
(POJO ‘porsisent Object,PO’ 持久化对象)

使用Mybatis的下载和应用

Mybatis下载网址:https://github.com/mybatis/mybatis-3/releases
下载好进行解压mybatis-3.4.2jar包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.打开IDEA工具,创建一个新的项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复制粘贴到lib里,
在这里插入图片描述
在这里插入图片描述
创建包名在这里插入图片描述
在这里插入图片描述

创建类名
在这里插入图片描述
在这里插入图片描述

package com.itheima.po;

/**
 *  持久化类
 */
public class Customer {
    private Integer id;// 编号id
    private String username; // 用户名
    private  String jobs; // 工作的类型
    private  String phone;// 电话
    // 按键盘的 alt + insert 快捷键  生成tostring方法  getter和setter方法
    @Override
    public String toString() {
        return "Custonter{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", jobs='" + jobs + '\'' +
                ", phone='" + phone + '\'' +
                '}';
    }

    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 String getJobs() {
        return jobs;
    }

    public void setJobs(String jobs) {
        this.jobs = jobs;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
}

创建约束文档模板
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

约束文档mybatis-cofing.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>
    <!-- 1.配置环境,默认的环境id为mysql -->
    <environments default="mysql">
        <!-- 1.2.配置id为mysql的数据库环境 -->
        <environment id="mysql">
            <!-- 使用JDBC的事务管理 -->
            <transactionManager type="JDBC"/>
            <!-- 配置数据库连接信息(数据库连接池) -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
<!--                连接数据库的名字 复制文档建立后自己后补-->
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<!--                数据库的名字不一样也需要修改-->
                <property name="username" value="root"/>
<!--                数据库的密码不一样也需要修改-->
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 2.配置Mapper的位置 -->
    <mappers>
<!--        配置文件的路径不一样也需要修改-->
        <mapper resource="com\itheima\mapper\CustomerMapper.xml"/>
    </mappers>
</configuration>

建立文件在这里插入图片描述
在这里插入图片描述
像上面的一样建立一个约束文件在mapper里命名为CustomerMapper.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">
<!-- namespace 表示命名空间 -->
<mapper namespace="com.itheima.mapper.CustomerMapper">
    <!-- SQL语句 -->
    <!-- 根据用户查询id -->
    <select id="findCustomerById" parameterType="Integer"
            resultType="com.itheima.po.Customer">
        select  *  from t_customer where id = #{id};
    </select>
    <!-- 模胡查询 -->
    <select id="findCustomerByName" parameterType="String"  resultType="com.itheima.po.Customer">
        select * from t_customer where username like '%${value}%';
    </select>
    <!-- 添加查询 -->
    <insert id="addCustomer" parameterType="com.itheima.po.Customer">
        insert into t_customer (username,jobs,phone)
        values (#{username},#{jobs},#{phone});

    </insert>
</mapper>

创建一个测试类文档以及类

package com.itheima.test;


import com.itheima.po.Customer;
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 MybatisTest {


    /**
     * 根据id 查询信息
     * @throws IOException
     */
    @Test
    public void  findCustomerByIdTest() throws Exception {
      // 1.读取配置文件
        String resource = "mybatis-config.xml";
        InputStream is = Resources.getResourceAsStream(resource);
//        InputStream is = MybatisTest.class.getClassLoader().getaResourceAsStream(resource);
        // 2.根据配置文集创建SqlSessionFactory sql 会话工厂对象
        SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);

        // 3.通过SQLSessionFactory 会话对象配置SQLSession对象
        SqlSession sqlSession = ssf.openSession();
        // 4.SQLSession执行映射文件提交SQL语句,并且返回映射结果
        Customer customer = sqlSession.selectOne("com.itheima.mapper.CustomerMapper.findCustomerById",3);
        // 打印结果
        System.out.println(customer.toString());
        // 5.关闭SQLSession
        sqlSession.close();
    }


    /**
     * 模胡查询
     */
    @Test
    public void findCoustomerNameTest() throws IOException {
        // 1.读取配置文件
        String resource = "mybatis-config.xml";
        InputStream is = Resources.getResourceAsStream(resource);
        // 2.根据配置文集创建SqlSessionFactory sql 会话工厂对象
        SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
        SqlSessionFactory ssf = ssfb.build(is);
        // 3.通过SQLSessionFactory 会话对象配置SQLSession对象
        SqlSession sqlSession = ssf.openSession();
        // 4.SQLSession执行映射文件提交SQL语句,并且返回映射结果
        List<Customer> customers = sqlSession.selectList("com.itheima.mapper.CustomerMapper.findCustomerByName", "a");
        for (Customer c :customers){
            // 看看打印的结果
            System.out.println(c);
        }
        sqlSession.close();
    }
    /**
     * 添加客户
     */
    @Test
    public void addCustomerTest() throws Exception {
        // 1.读取配置文件
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 2.根据配置文件构建SQLSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 3.通过SQLSessionFactory 创建SQLSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 4.SQLSession执行添加操作,创建Customer,并向对象添加数据
        Customer customer = new Customer();
        customer.setUsername("rose");
        customer.setJobs("student");
        customer.setPhone("13333533092");
        // 4.3执行SQLSession 的插入语句,返回SQL语句影响行数
        int rows = sqlSession.insert("com.itheima.mapper" + ".CustomerMapper.addCustomer", customer);
        // 4.3 通过返回判断插入操作执行成功
        if(rows >0){
            System.out.println("您成功插入"+rows+"条数据!");
        }else {
            System.out.println("执行失败!!!");
        }
        // 4.4提交事务
        sqlSession.commit();
        // 5.关闭SQLSession
        sqlSession.close();
    }
}

在这里插入图片描述
错误:在这里插入图片描述我把mapper-confing.xml的点写层了逗号
映射文件mapper少写了一个p
添加的sql语句值后括号没有添加包住内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值