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项目实战实现插入操作的主要内容,如果未能解决你的问题,请参考以下文章