MyBatis入门九:Mybatis数据插入、修改、删除一:插入数据;
本篇博客内容是:向表中插入数据。
注:JDBC是java提供的一个操作数据库的API;是一个持久层ORM框架,底层是对JDBC的封装。对JDBC操作数据库做了一系列优化。即为了实现某个功能,JDBC和在实际编码上是不同的,但是的背后都是JDBC在做支撑啦。(详细内容可以参考:是什么以及和JDBC的关系?,能够帮助梳理清楚和JDBC的关系)
PS:一旦设计数据的写(插入、修改、删除),就必须要涉及到数据库的事务:封装了JDBC的事务控制机制,操作起来十分方便。
(1)java程序,都是客户端;
(2)数据库事务可以参考MySQL综合应用二:事务机制一:事务的基本介绍等文章;
目录
(0)本篇博客主要内容是,插入数据:插入数据方法的简介
(1)先在goods.xml中编写【插入的SQL标签】
(2)然后,测试 &运行结果
(0)本篇博客主要内容是,插入数据:插入数据方法的简介
(1)先在goods.xml中编写【插入的SQL标签】
发现,向表中插入数据,标签的(即参数类型)就是Goods实体类类型;
(2)然后,测试 &运行结果
package com.imooc.mybatis;import com.imooc.mybatis.dto.GoodsDTO;
import com.imooc.mybatis.entity.Goods;
import com.imooc.mybatis.utils.MyBatisUtils;
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.Reader;
import java.sql.Connection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** JUnit单元测试类*/
public class MyBatisTestor {@Testpublic void testInsert() throws Exception {SqlSession session = null;try {session = MyBatisUtils.openSession();Goods goods = new Goods();goods.setTitle("测试商品");goods.setSubTitle("测试子标题");goods.setOriginalCost(150f);goods.setCurrentPrice(100f);goods.setDiscount(0.67f);goods.setIsFreeDelivery(1);goods.setCategoryId(43);// insert()方法返回一个int类型的返回值:代表本次成功插入的记录总数;// (因为这儿我们不是批量插入,所以如果插入成功,num=1)int num = session.insert("goods.insert",goods);session.commit();// commit()方法:提交事务数据。System.out.println(goods.getGoodsId());} catch (Exception e) {if (session != null){session.rollback(); // 如果程序出错,未能完整执行,则回滚事务。。。// PS:发现Mybatis封装后,事务控制在编码实现上简单了些}throw e;}finally {MyBatisUtils.closeSession(session);}}
}
说明:
(1)的方法说明
(2)发现,封装了JDBC的事务,编写起来更加的方便;
(3)子标签中的【 ()】自动将新插入数据的id号回填到Goods类对象中,这十分有利于后续的操作。
(4)不要忘了事务的提交和回滚控制;
运行结果: