本篇博客内容是:向表中插入数据。
注:JDBC是java提供的一个操作数据库的API;Mybatis是一个持久层ORM框架,底层是对JDBC的封装。 Mybatis对JDBC操作数据库做了一系列优化。即为了实现某个功能,JDBC和Mybatis在实际编码上是不同的,但是Mybatis的背后都是JDBC在做支撑啦。(详细内容可以参考:Mybatis是什么以及Mybatis和JDBC的关系?,能够帮助梳理清楚Mybatis和JDBC的关系)
PS:一旦设计数据的写(插入、修改、删除),就必须要涉及到数据库的事务:Mybatis封装了JDBC的事务控制机制,操作起来十分方便。
(1)java程序,Navicat都是客户端;
(2)数据库事务可以参考MySQL综合应用二:事务机制一:事务的基本介绍等文章;
目录
(0)本篇博客主要内容是,插入数据:插入数据方法的简介
(1)先在l中编写【插入的SQL标签】
(2)然后,测试 & 运行结果
发现,向t_goods表中插入数据,insert标签的paremeterType(即参数类型)就是Goods实体类类型;
package batis;import batis.dto.GoodsDTO;
import ity.Goods;
import batis.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);sessionmit();// commit()方法:提交事务数据。System.out.GoodsId());} catch (Exception e) {if (session != null){llback(); // 如果程序出错,未能完整执行,则回滚事务。。。// PS:发现Mybatis封装后,事务控制在编码实现上简单了些}throw e;}finally {MyBatisUtils.closeSession(session);}}
}
说明:
(1)session的insert方法说明
(2)发现,Mybatis封装了JDBC的事务,编写起来更加的方便;
(3)<selectKey>子标签中的【select last_insert_id()】自动将新插入数据的id号回填到Goods类对象中,这十分有利于后续的操作。
(4)不要忘了事务的提交和回滚控制;
运行结果:
本文发布于:2024-02-02 01:04:21,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170681198640403.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |