框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据1

本文详细介绍如何使用MyBatis框架向数据库中插入数据。包括编写SQL语句、配置mapper.xml文件、创建测试代码并使用单元测试验证结果。此外还介绍了如何通过OGNL表达式从POJO对象中获取属性值,并探讨了手动与自动提交事务的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本节主要内容

1:根据上节课中提出的需求完成③:向数据库中插入数据

2:测试代码实现

3:总结&下节预告

本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第6篇 mybatis入门程序之需求开发3向数据库中插入数据1

声明:本文系凯哥原创。转载请注明出处

一:数据库插入数据

1.1:先写sql插入数据库

全参数插入:

框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据1

说明:数据库中user表中有五个字段。所以需要五个参数。

在看表结构:

框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据1

我们可以看到,主键id是自增长类型的。所以在插入的时候可以不进行插入。

修改后的sql语句:

框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据1

1.2:在mybatis中怎么写呢?

思考:

1:直接把sql语句放置到对应的mapper.xml文件中吗?那么参数怎么获取?

2:传递的参数又是什么?

分析:

1:通过前面学习我们知道#{}相当于是?起占位符作用

而${}是连接符的作用(相当于是java中加号(+)连接作用)

通过sql语句,我们看到了参数值是四个?。所以这里使用#{}获取值。

2:parameterType是对应的pojo对象就可以。

在获取的时候,#{属性}中的属性就是pojo对象中属性即可。

这种是通过OGNL表达式获取的。

框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据1

说明:

1:通过OGNL表达式到user对象中获取对应的属性值

2:#{属性}中的属性名称必须和user对象中的属性名称一致

二:测试代码

2.1:如下图:

框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据1

说明:

1:插入数据的时候使用的是sqlsession的insert方法

2:第一个参数依然是sql语句唯一标识符

3:参数二是sql语句需要的参数。在这里我们需要的是user这个对象

2.2:使用unit测试

框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据1

绿色的说明成。

查看打印的sql语句:

框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据1

说明:

1:Preparing 是执行的sql语句

2:Parameters 是执行sql需要的参数列表。按照?的顺序的。

我们发现,明明传递的是user对象,这这里打印出的参数不是user对象,而是我们给user对应属性设置的值。这就是OGNL表达式做的。

3:Updates 是执行该条sql语句所影响的行数

查询数据库:

框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据1

发现数据库中并没有数据啊。这是为什么呢?

因为没有提交事务。所以,数据就没有入库。

在代码中添加事务:

框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据1

重新查询数据库:

框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据1

上面是手动提交事务的。

在创建获取sqlsession对象的时候,还可以设置为自动提交事务:

框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据1

就是在openSession的时候传递一个boolean类型的参数。

我们可以查看源码:

框架学习系列 mybatis 第6篇 mybatis入门程序之需求开发3向数据库中插入数据1

发现源码中会自动commit()的。

三:总结&下节预告

通过本文学习我们需要掌握的

1:在保存数据的时候,如果通过一个对象来保存

2:需要注意的是,在提交的时候需要事务。

如果是自动提交,在执行完insert方法后可以不再手动提交了

如果非自动提交事务,那么在执行完insert方法后必须手动提交(commit),数据才会入库的。

下节预告:

在电商项目中,比如下单需要涉及到多张表。如订单表、订单明细表、联系人(收货地址、联系人、手机号等)表三张表。在订单明细表和订单表是关联的。在订单明细表中,需要有订单表的主键id.

也就是说,在订单表数据插入完数据库后,就需要将这条数据的id作为参数插入到订单明细表中。

注意这些操作在同一个事务中,怎么操作才能实现这个功能呢?

欢迎学习下一篇《框架学习系列 mybatis 第7篇 mybatis入门程序之插入数据库后返回主键》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值