燕郊網(wǎng)站建設(shè)社群營銷平臺有哪些
本專欄主要是記錄學(xué)習(xí)完JavaSE后學(xué)習(xí)JavaWeb部分的一些知識點總結(jié)以及遇到的一些問題等,如果剛開始學(xué)習(xí)Java的小伙伴可以點擊下方連接查看專欄
本專欄地址:🔥JavaWeb
Java入門篇: 🔥Java基礎(chǔ)學(xué)習(xí)篇
Java進(jìn)階學(xué)習(xí)篇(持續(xù)更新中):🔑Java進(jìn)階學(xué)習(xí)篇
本系列文章會將講述有關(guān)于如何使用MyBatis完成增刪查改的操作,預(yù)計本系列文章會有以下這些文章,在寫完本系列的文章后會有一篇文章羅列這些文章以及其地址(傳送門)小伙伴們直接點擊查看即可
文章名稱 | 文章地址 |
---|---|
查詢所有數(shù)據(jù) | 使用映射配置文件實現(xiàn)CRUD操作——查詢所有數(shù)據(jù) |
查詢詳情 | 使用映射配置文件實現(xiàn)CRUD操作——通過主鍵查詢對應(yīng)數(shù)據(jù) |
使用映射配置文件實現(xiàn)CRUD操作——多條件查詢 | |
使用映射配置文件實現(xiàn)CRUD操作——動態(tài)SQL優(yōu)化條件查詢 | |
添加數(shù)據(jù) | |
修改全部字段 | |
修改動態(tài)字段 | |
刪除一條數(shù)據(jù) | |
批量刪除數(shù)據(jù) |
文章目錄
- 一、前言
- 二、添加數(shù)據(jù)
- 1.BrandMapper接口
- 2.SQL語句
- 3.測試類
- 三、返回主鍵
- 1.概述
- 2.將id綁定到對象
- 3.改寫測試類
- 4.完整代碼
- 四、結(jié)語
一、前言
本文將講述有關(guān)于添加數(shù)據(jù)以及添加完數(shù)據(jù)能夠返回主鍵的功能,這在實際的業(yè)務(wù)中會有如下的場景:在訂單頁面會有一個訂單項,在訂單項處會顯示出自己選購的商品,那么要顯示自己選購的商品就必然要返回該數(shù)據(jù)的主鍵,因此添加完數(shù)據(jù)能夠返回主鍵的功能是需要重點掌握的
二、添加數(shù)據(jù)
1.BrandMapper接口
這里只需要構(gòu)造一個含參數(shù)的add方法即可,括號內(nèi)返回的參數(shù)是Brand
實體類和brand
對象,然后在爆紅處直接使用快捷鍵Alt+Enter
生成Statement
void add(Brand brand);
2.SQL語句
添加數(shù)據(jù)可以用INSERT ··· INTO
語句來寫,由于此時不確定我們要添加的數(shù)據(jù)是什么,所以這里依然使用參數(shù)占位符來書寫語句,這里應(yīng)該沒有太多難點,直接上代碼
insert into tb_brand(brand_Name,company_name,ordered,description,status)
values (#{brandName},#{companyName},#{ordered},#{description},#{status})
3.測試類
這里需要我們傳遞進(jìn)去參數(shù),即我們要先設(shè)置好參數(shù)以后,傳遞到Brand類中,用Brand類new出來的對象調(diào)用set方法,后面的代碼與之前相同,我們來執(zhí)行查看一下結(jié)果
int status = 1;String brandName = "戴爾";String companyName = "戴爾公司";String description = "激發(fā)人類潛能 —— 這是技術(shù)的終極意義,也是戴爾所做一切的源動力";int ordered = 100;Brand brand = new Brand();brand.setStatus(status);brand.setBrandName(brandName);brand.setCompanyName(companyName);brand.setDescription(description);brand.setOrdered(ordered);
這里可以看出有成功添加數(shù)據(jù),但是在表格中沒有這條添加的數(shù)據(jù),刷新完了也沒有,這是因為沒有提交事務(wù),所以它無法提交到表格中,自然也就不會更新數(shù)據(jù)了;如下圖所示,Setting autocommit to false on JDBC Connection
,所以這里我們要在執(zhí)行完方法后多加一個提交事務(wù)的語句
提交事務(wù)
sqlSession.commit();
這時候再執(zhí)行一下語句,發(fā)現(xiàn)表格更新了,出現(xiàn)了我們剛剛新增的數(shù)據(jù),如果不寫這個提交事務(wù)的話,也可以在openSession
方法中傳遞參數(shù)true
,開啟自動提交事務(wù)
三、返回主鍵
1.概述
如果需要將剛添加成功的數(shù)據(jù)添加到訂單項的數(shù)據(jù)庫中,那么必然要設(shè)置所屬訂單的id,那么就需要獲取id,也就是在添加完數(shù)據(jù)后要返回主鍵。其實在剛剛我們執(zhí)行了SQL語句后,id就已經(jīng)存在了,只不過沒有綁定到對象中,所以我們要綁定一下才行
2.將id綁定到對象
這里只需要設(shè)置兩個參數(shù)就可以完成綁定,并將添加完的數(shù)據(jù)的id返回出來:useGeneratedKeys="true"
以及keyProperty="id"
<!--添加數(shù)據(jù)--><insert id="add" useGeneratedKeys="true" keyProperty="id">insert into tb_brand(brand_Name,company_name,ordered,description,status)values (#{brandName},#{companyName},#{ordered},#{description},#{status});</insert>
3.改寫測試類
在執(zhí)行方法時,要獲取id,就要調(diào)用get方法,并打印輸出,看結(jié)果
Integer id = brand.getId();
System.out.println(id);
執(zhí)行結(jié)果
Brand{id=6, brandName=‘惠普’, companyName=‘惠普公司’, ordered=75, description=‘作為一家科技公司,我們的目標(biāo)不僅僅是賺取豐厚的利潤。還希望能夠讓世界變得更加美好’, status=1}
6
4.完整代碼
public class MyBatisTest_add {@Testpublic void add() throws IOException {//接收參數(shù)int status = 1;String brandName = "惠普";String companyName = "惠普公司";String description = "作為一家科技公司,我們的目標(biāo)不僅僅是賺取豐厚的利潤。還希望能夠讓世界變得更加美好";int ordered = 75;Brand brand = new Brand();brand.setStatus(status);brand.setBrandName(brandName);brand.setCompanyName(companyName);brand.setDescription(description);brand.setOrdered(ordered);//加載MyBatis的核心配置文件,獲取SqlSessionFactoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//SqlSession獲取對象SqlSession sqlSession = sqlSessionFactory.openSession();//獲取BrandMapper接口代理對象BrandMapper brandMapper= sqlSession.getMapper(BrandMapper.class);//執(zhí)行方法brandMapper.add(brand);Integer id = brand.getId();//提交事務(wù)sqlSession.commit();//打印結(jié)果System.out.println(brand);System.out.println(id);//釋放資源sqlSession.close();}
}
四、結(jié)語
添加數(shù)據(jù)比較簡單,主要是能夠?qū)⑻砑油甑臄?shù)據(jù)id(主鍵)返回到控制臺,是個重點,接下來將講述有關(guān)于修改字段的知識點