MyBatis项目实战实现插入操作

Posted AC-fun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis项目实战实现插入操作相关的知识,希望对你有一定的参考价值。

上一篇博客: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 语句和参数。方便查看执行的语句过程。

执行结果:


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

以上是关于MyBatis项目实战实现插入操作的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis项目实战实现插入操作

MyBatis项目实战实现查询操作

MyBatis项目实战实现查询操作

MyBatis项目实战实现查询操作

MyBatis注解开发多表代码操作——手把手教你实战操作

Spring Boot实战之MyBatis、Druid