Spring boot整合mybatis實現(xiàn)過程圖解
導(dǎo)入mybatis jar包
右鍵pom.xml


模擬springboot底層實現(xiàn)類
1.
定義接口
@Mapper
public interface GoodsDao {
/**
* 基于商品id刪除商品
* @param id 商品id
* @return 刪除行數(shù)
* 數(shù)據(jù)層方法對象的sql映射
*/
@Delete("delete from tb_goods where id=#{id}")
//當(dāng)傳入的參數(shù)只有一個且不是數(shù)組時
//#{id}這個地方的變量可以不是傳入的參數(shù)名(自己隨意)
int deleteById(Integer id);
}
測試
@SpringBootTest
public class TestGoods {
@Autowired
private GoodsDao gd;
@Test
void TestGoods() {
int i =gd.deleteById(10);
System.out.println(i);
}
}
2.
自己實現(xiàn)
接口方法
@Mapper
public interface GoodsDao {
/**
* 基于商品id刪除商品
* @param id 商品id
* @return 刪除行數(shù)
* 數(shù)據(jù)層方法對象的sql映射
*/
@Delete("delete from tb_goods where id=#{id}")
int deleteById(Integer id);
}
@Component
public class GoodsDaoImpl {
@Autowired
private SqlSession sqlSession;
public int deleteById(Integer id) {
return sqlSession.delete("com.cy.demo.goods.dao.GoodsDao.deleteById", id);
//sqlSession.delete("com.cy.demo.goods.dao.deleteById",id)
}
}

@SpringBootTest
public class GoodsDaoImpTest {
@Autowired
private GoodsDaoImpl gdi;
@Test
void testdelete() {
int i = gdi.deleteById(9);
System.out.println(i);
}
}
直接導(dǎo)mapper文件找對應(yīng)的元素
3.
當(dāng)sql語句比較復(fù)雜時使用映射文件
接口:
/**
*GoodsDao.java
* ids可以接受多個參數(shù)
* 在mapper文件中直接使用array來接受,
* @param ids
* @return
*/
int deleteObject(/*@Param("ids")*/Integer...ids);
//當(dāng)mybatis過低時需要加上@Param("ids")才能識別
不加@Param("ids")報錯


使用xml映射
獲取xml頭文件(去官網(wǎng))

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cy.demo.goods.dao.GoodsDao">
<delete id="deleteObject">
delete from tb_goods
<where>
<if test="ids!=null and ids.length>0">
id in
<foreach collection="ids" open="(" close=")" separator=","
item="i">
#{i}
</foreach>
</if>
or 1=2
</where>
</delete>
</mapper>
配置:

測試:
@Autowired
private GoodsDao gd;
@Test
void deleteObject() {
int rows=gd.deleteObject(1,2,3);
System.out.println(row);
}
當(dāng)我們在執(zhí)行此方法時,其實現(xiàn)類內(nèi)部會檢測接口方法上是否有定義sql映射
假如沒有,然后基于接口類全名找到對應(yīng)的映射文件(mapper映射文件的id),然后在基于方法名
再找到對應(yīng)映射文件的元素,進而獲取sql映射
錯誤解決:


binding異常還有可能時參數(shù)異常,還有可能是配置文件有問題

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring創(chuàng)建Bean完成后執(zhí)行指定代碼的幾種實現(xiàn)方式
在實際開發(fā)中經(jīng)常會遇到在spring容器加載完某個bean之后,需要執(zhí)行一些業(yè)務(wù)代碼的場景,本文給大家介紹Spring創(chuàng)建Bean完成后執(zhí)行指定代碼的幾種實現(xiàn)方式,感興趣的朋友一起看看吧2024-01-01
java.lang.ArrayIndexOutOfBoundsException數(shù)組越界異常問題解決
這篇文章主要給大家介紹了關(guān)于java.lang.ArrayIndexOutOfBoundsException數(shù)組越界異常問題解決的相關(guān)資料,數(shù)組越界訪問是一個非常嚴(yán)重的問題,文中通過圖文將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
Java讀取制表符文本轉(zhuǎn)換為JSON實現(xiàn)實例
在Java開發(fā)中,處理各種數(shù)據(jù)格式是常見的任務(wù),本文將介紹如何使用Java讀取制表符文本文件,并將其轉(zhuǎn)換為JSON格式,以便于后續(xù)的數(shù)據(jù)處理和分析,我們將使用Java中的相關(guān)庫來實現(xiàn)這個過程,并提供詳細(xì)的代碼示例2024-01-01
Maven中exec插件執(zhí)行Java程序的實現(xiàn)
在Maven項目中,可以使用Maven的插件來執(zhí)行Java程序,本文主要介紹了Maven中exec插件執(zhí)行Java程序的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2023-12-12
SpringBoot配置返回數(shù)據(jù)不存在null的問題小結(jié)
文章介紹了在Spring Boot項目中使用Jackson序列化器處理JSON數(shù)據(jù)時遇到的問題,特別是如何配置Jackson以返回不包含null值的JSON響應(yīng),并探討了Jackson的三種主要JSON處理方法,感興趣的朋友一起看看吧2025-02-02
java 抓取網(wǎng)頁內(nèi)容實現(xiàn)代碼
這篇文章主要介紹了java 抓取網(wǎng)頁內(nèi)容實現(xiàn)代碼,需要的朋友可以參考下2014-02-02
詳解SpringBoot與SpringCloud的版本對應(yīng)詳細(xì)版
這篇文章主要介紹了詳解SpringBoot與SpringCloud的版本對應(yīng)詳細(xì)版,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Java 數(shù)據(jù)結(jié)構(gòu)七大排序使用分析
這篇文章主要介紹了Java常用的排序算法及代碼實現(xiàn),在Java開發(fā)中,對排序的應(yīng)用需要熟練的掌握,這樣才能夠確保Java學(xué)習(xí)時候能夠有扎實的基礎(chǔ)能力。那Java有哪些排序算法呢?本文小編就來詳細(xì)說說Java常見的排序算法,需要的朋友可以參考一下2022-04-04
自定義的Troop<T>泛型類( c++, java和c#)的實現(xiàn)代碼
這篇文章主要介紹了自定義的Troop<T>泛型類( c++, java和c#)的實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05

