MyBatis项目实战(2)实现插入操作

#MyBatis 专栏收录该内容
2 篇文章 0 订阅

上一篇博客:MyBatis项目实战(1)实现查询操作

简介

 本篇主要讲述如何在上一篇博客 MyBatis项目实战(1)实现查询操作 的基础上使用MyBatis实现向MySQL数据库中插入数据。

步骤

在持久层的dao接口定义插入方法

package com.acfun.dao;

import com.acfun.entity.Student;

import java.util.List;

// 接口,操作student表
public interface StudentDao {
    // 查询student表的所有数据
    List<Student> selectStudents();

    // 插入方法
    // 参数: student,表示要插入到数据库中的数据
    // 返回值: int,表示执行insert操作后的影响数据库的行数
    int insertStudent(Student student);
}

在sql映射文件中添加实现插入操作的配置

<!--插入操作-->
    <insert id="insertStudent">
        insert into student values(#{id}, #{name}, #{email}, #{age})
    </insert>

在这里插入图片描述

编写测试类

 这里要注意MyBatis是默认没有提交事物的,所以需要我们在添加之后手动的提交事物,具体代码如下。

package com.acfun;

import com.acfun.entity.Student;
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;

/**
 * @description: 插入数据测试类
 * @author: ACfun
 * @create: 2021-05-08 14:57
 **/
public class TestMybatis {
    @Test
    public void testInsert() throws IOException {
        // 访问 mybatis 读取 student 数据
        // 1. 定义mybatis主配置文件的名称,从类路径的根开始(target/classes)
        String config = "mybatis.xml";
        // 2. 读取config表示的类
        InputStream in = Resources.getResourceAsStream(config);
        // 3. 创建SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        // 4. 创建SqlSessionFactory对象
        SqlSessionFactory factory = builder.build(in);
        // 5. 【重要】获取SqlSession对象,从SqlSessionFactory中获取SqlSession
        SqlSession sqlSession = factory.openSession();
        // 6. 【重要】指定要执行的SQL语句的标识.sql映射文件中的namespace + "." + 标签的 id 值
        String sqlId = "org.mybatis.example.StudentDao.insertStudent";
        // 7. 执行SQL语句,通过sqlId来找到语句
        Student student = new Student();
        student.setId(1002);
        student.setName("ACfun");
        student.setEmail("ACfun@163.com");
        student.setAge(30);
        int re = sqlSession.insert(sqlId, student);

        // 【注意】mybatis默认不是自动提交事务的,所以在insert, update , delete后要手工提交事务
        sqlSession.commit();
        
        // 8. 输出结果
        System.out.println("执行Iinsert结果,插入条数为:" + re);
        // 9. 关闭SqlSession对象
        sqlSession.close();
    }
}

执行结果

执行结果
在这里插入图片描述

如何查看执行的过程

 mybatis.xml文件加入日志配置,可以在控制台输出执行的sql 语句和参数。方便查看执行的语句过程。
配置日志功能
执行结果:
执行结果


未完待续,持续更新中……

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页

打赏

AC-fun

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值