欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mybatis參數(shù)(Parameters)傳遞方式

 更新時間:2023年12月04日 09:38:27   作者:路在何方い  
這篇文章主要介紹了Mybatis參數(shù)(Parameters)傳遞方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1.單個普通類型(基本類型、包裝類型、String)的參數(shù)

封裝規(guī)則:Mybatis不會做特殊的處理

取值 #{隨便寫,建議與實際的參數(shù)名保持一致}

例如:

操作:public Employee getEmployeeById(Integer id );

取值:#{id}

	<!-- 關于select 的查詢語句 resulType:查詢結果對應的類型        id 當前sql語句的唯一標識       
	#{id}:獲取傳遞的參數(shù)         resultType用于指定結果集的封裝類型 
	parameter:確定傳遞參數(shù)的類型,也可以省略,mybatis會自動識別當前參數(shù)類型是什么
	-->
	<select id="getEmployeeById" resultType="employee"  parameterType="java.lang.Integer" 
	 databaseId="mysql">
		select id,last_name lastName,email,gender from tbl_employee where
		id=#{id}
	</select>

2.多個參數(shù)

封裝規(guī)則:Mybatis會把多個參數(shù)封裝成一個Map,封裝時使用的key是:0 1 2 ....N-1/param1param2....paramN.

取值:#{0 1 2 ....N-1/param1param2....paramN}

例如:

操作:public Employee getEmpsByLastNameAndId(String lastName, Integer id );

取值:#{lastName}、#{id}錯誤

異常:Cause: org.apache.ibatis.binding.BindingException: Parameter 'lastName' not found. Available parameters are[0, 1, param1, param2]

取值:#{0}、#{1} 或者#{param1}、#{param2}正確

不方便:參數(shù)一旦多了,不知道參數(shù)具體在第幾個位置

<!--${param1} and id=${param2} 參數(shù)一旦多了 不知道參數(shù)具體在第幾個位置 -->
	<select id="getEmpsLastNameAndId" resultType="employee">
		select * from tbl_employee where last_name=#{param1} and id=#{param2}
	</select>

3.命名參數(shù)

使 用@Param()來指定多個參數(shù)封裝Map時所使用的key

封裝規(guī)則:Mybatis會把多個參數(shù)封裝成一個Map,封裝時使用的key是:通過@Param指定的key、param1param2....paramN

取值:#{@Param指定的key/param1param2....paramN}

例如:

操作:public Employee getEmpsLastNameAndIdNamedParameter(@Param("lastName") String lastName, @Param("Id") Integer id);

取值:#{lastName/param1}#{id/param2}

<select id="getEmpsLastNameAndIdNamedParameter" resultType="employee">
		select * from tbl_employee where last_name=#{param1} and id=#{param2}
	</select>
 
	<select id="getEmpsLastNameAndIdNamedParameter" resultType="employee">
		select * from tbl_employee where last_name=#{lastName} and id=#{id}
	</select>

4.Map 如果參數(shù)很多

但是不屬于某個對象的屬性,也是很常用,可以直接封裝成map進行傳遞。

封裝規(guī)則:Mybatis不做特殊處理,直接使用傳遞的Map

取值 :#{map中的key}

例如:public List<Employee> getEmpsByLastNameLikeAnsEmailLike(Map<String,Object> map);

<select id="getEmpsByLastNameLikeAnsEmailLike" resultType="employee">
		select * from tbl_employee where last_name like '${ln}' and email like
		'${email}'
	</select>
/*
	 * 5.如果參數(shù)很多,但不屬于某個對象的屬性,也不是很常用,可以直接封裝成map進行傳遞 封裝規(guī)則 Mybatis不做特殊處理 直接使用傳遞的map
	 * 取值 #{map中的key}
	 */
	@Test
	public void testMap() throws IOException {
		SqlSessionFactory ssf = getSqlSessionFactory();
		SqlSession sqlSession = ssf.openSession();
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("ln", "%bq%");
		map.put("email", "%qq%");
		EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
		List<Employee> emps = mapper.getEmpsByLastNameLikeAnsEmailLike(map);
		System.out.println("使用map參數(shù)封裝時的結果對象   " + emps);
	}

5.POJO ---> 傳遞單個對象

封裝規(guī)則:Mybatis不做特殊處理

取值: #{POJO的屬性名}

例如:

操作:public Integer addEmployee(Employee employee);

取值:#{employee的屬性名idlastNameemailgender}

	<!--1. 字段名和屬性名一一對應 2.parameter:確定傳遞參數(shù)的類型,也可以省略,mybatis會自動識別當前參數(shù)類型是什么 useGeneratedKeys:true使用自增主鍵的方式 
		keyProperty="id" 確定當前對象的哪個屬性保存主鍵信息 保存自增主鍵值 -->
	<insert id="addEmployee" parameterType="com.hbsi.bean.Employee"
		useGeneratedKeys="true" keyProperty="id">
		insert into tbl_employee(last_name,email,gender)
		values(#{lastName},#{email},#{gender})
	</insert>

6.TO: Transfer Object數(shù)據(jù)傳輸對象

如果參數(shù)很多,但不屬于某個對象的屬性,卻很常用,推薦寫成java類,封裝成對象進行傳遞

例如:在分頁功能用的較多:封裝成Page類{ int pageNo, int pageSize, int pages , boolean isHasPrevpage,boolean isHasNextPge......}

7.集合-------使用mybatis迭代

封裝規(guī)則: MyBatis對 CollectionArray 會進行特殊處理, 也會封裝Map。

封裝的key:

  • Collection(List/Set):使用的key: collection
  • List :使用的key: collection/ list
  • Array:使用的key:array

例如:

操作:

public void deleteByExample(List<Integer> ids);

取值:(此時的key必須為list或collection)

<delete id="deleteByExample">
		delete from tbl_employee where id in
		<if test="_parameter!=null">
			<foreach close=")" collection="list" item="id" open="("
				separator=",">
				#{id}
			</foreach>
		</if>
	</delete>

集合-------使用mybatis迭代也可使 用@Param()來指定參數(shù)封裝Map時所使用的key,多個參數(shù)也可以

操作

public void deleteByExample(@Param("listId")List<Integer> ids);

取值:此時的可以使用@Param("listId")指定的別名,listId

<delete id="deleteByExample">
		delete from tbl_employee where id in
		<if test="_parameter!=null">
			<foreach close=")" collection="listId" item="id" open="("
				separator=",">
				#{id}
			</foreach>
		</if>
	</delete>

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • SpringBoot集成極光推送完整實現(xiàn)代碼

    SpringBoot集成極光推送完整實現(xiàn)代碼

    本文主要介紹了SpringBoot集成極光推送完整實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • springboot內(nèi)置tomcat調(diào)優(yōu)并發(fā)線程數(shù)解析

    springboot內(nèi)置tomcat調(diào)優(yōu)并發(fā)線程數(shù)解析

    這篇文章主要介紹了springboot內(nèi)置tomcat調(diào)優(yōu)并發(fā)線程數(shù)解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java實現(xiàn)刪除PDF中指定頁面

    Java實現(xiàn)刪除PDF中指定頁面

    這篇文章主要為大家詳細介紹了如何使用一個免費的國產(chǎn)Java庫來刪除PDF中的指定頁面或者刪除PDF中的空白頁,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • Java多例Bean的應用場景-easyExcel導入

    Java多例Bean的應用場景-easyExcel導入

    EasyExcel 是一個基于 Java 的簡單、省內(nèi)存的讀寫 Excel 的開源項目。這篇文章主要介紹了用easyExcel導入Java Bean的應用場景,感興趣的朋友可以參考閱讀
    2023-04-04
  • cmd中javac命令無法運行(java指令能運行)解決步驟

    cmd中javac命令無法運行(java指令能運行)解決步驟

    這篇文章主要介紹了在安裝JDK后,執(zhí)行javac命令沒有返回值的問題,可能是由于命令提示符窗口緩存問題、系統(tǒng)路徑優(yōu)先級問題、文件權限問題或命令行輸入問題,文中通過代碼將解決的步驟介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • SpringBoot基礎教程之集成郵件服務

    SpringBoot基礎教程之集成郵件服務

    這篇文章主要給大家介紹了關于SpringBoot基礎教程之集成郵件服務的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用SpringBoot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-07-07
  • Springboot單元測試無法讀取配置文件的解決方案

    Springboot單元測試無法讀取配置文件的解決方案

    這篇文章主要介紹了Springboot單元測試無法讀取配置文件的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Springboot引入多個yml方法(多種方案)

    Springboot引入多個yml方法(多種方案)

    SpringBoot默認加載的是application.yml文件,所以想要引入其他配置的yml文件,就要在application.yml中激活該文件這篇文章主要介紹了Springboot引入多個yml方法,需要的朋友可以參考下
    2019-10-10
  • SpringCloud集成Eureka并實現(xiàn)負載均衡的過程詳解

    SpringCloud集成Eureka并實現(xiàn)負載均衡的過程詳解

    這篇文章主要給大家詳細介紹了SpringCloud集成Eureka并實現(xiàn)負載均衡的過程,文章通過代碼示例和圖文講解的非常詳細,對大家的學習或工作有一定的參考價值,需要的朋友可以參考下
    2023-11-11
  • Java?事務注解@Transactional回滾(try?catch、嵌套)問題

    Java?事務注解@Transactional回滾(try?catch、嵌套)問題

    這篇文章主要介紹了Java?@Transactional回滾(try?catch、嵌套)問題,Spring?事務注解?@Transactional?本來可以保證原子性,如果事務內(nèi)有報錯的話,整個事務可以保證回滾,但是加上try?catch或者事務嵌套,可能會導致事務回滾失敗
    2022-08-08

最新評論