最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

例如:

操作:public Employee getEmployeeById(Integer id );

取值:#{id}

	<!-- 關(guān)于select 的查詢(xún)語(yǔ)句 resulType:查詢(xún)結(jié)果對(duì)應(yīng)的類(lèi)型        id 當(dāng)前sql語(yǔ)句的唯一標(biāo)識(shí)       
	#{id}:獲取傳遞的參數(shù)         resultType用于指定結(jié)果集的封裝類(lèi)型 
	parameter:確定傳遞參數(shù)的類(lèi)型,也可以省略,mybatis會(huì)自動(dòng)識(shí)別當(dāng)前參數(shù)類(lèi)型是什么
	-->
	<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.多個(gè)參數(shù)

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

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

例如:

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

取值:#{lastName}、#{id}錯(cuò)誤

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

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

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

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

3.命名參數(shù)

使 用@Param()來(lái)指定多個(gè)參數(shù)封裝Map時(shí)所使用的key

封裝規(guī)則:Mybatis會(huì)把多個(gè)參數(shù)封裝成一個(gè)Map,封裝時(shí)使用的key是:通過(guò)@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ù)很多

但是不屬于某個(gè)對(duì)象的屬性,也是很常用,可以直接封裝成map進(jìn)行傳遞。

封裝規(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ù)很多,但不屬于某個(gè)對(duì)象的屬性,也不是很常用,可以直接封裝成map進(jìn)行傳遞 封裝規(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ù)封裝時(shí)的結(jié)果對(duì)象   " + emps);
	}

5.POJO ---> 傳遞單個(gè)對(duì)象

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

取值: #{POJO的屬性名}

例如:

操作:public Integer addEmployee(Employee employee);

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

	<!--1. 字段名和屬性名一一對(duì)應(yīng) 2.parameter:確定傳遞參數(shù)的類(lèi)型,也可以省略,mybatis會(huì)自動(dòng)識(shí)別當(dāng)前參數(shù)類(lèi)型是什么 useGeneratedKeys:true使用自增主鍵的方式 
		keyProperty="id" 確定當(dāng)前對(duì)象的哪個(gè)屬性保存主鍵信息 保存自增主鍵值 -->
	<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ù)傳輸對(duì)象

如果參數(shù)很多,但不屬于某個(gè)對(duì)象的屬性,卻很常用,推薦寫(xiě)成java類(lèi),封裝成對(duì)象進(jìn)行傳遞

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

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

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

封裝的key:

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

例如:

操作:

public void deleteByExample(List<Integer> ids);

取值:(此時(shí)的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()來(lái)指定參數(shù)封裝Map時(shí)所使用的key,多個(gè)參數(shù)也可以

操作

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

取值:此時(shí)的可以使用@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>

總結(jié)

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

相關(guān)文章

  • Java web的讀取Excel簡(jiǎn)單實(shí)例代碼

    Java web的讀取Excel簡(jiǎn)單實(shí)例代碼

    下面小編就為大家?guī)?lái)一篇Java web的讀取Excel簡(jiǎn)單實(shí)例代碼。小編覺(jué)挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • SpringBoot自動(dòng)配置Quartz的實(shí)現(xiàn)步驟

    SpringBoot自動(dòng)配置Quartz的實(shí)現(xiàn)步驟

    本文主要介紹了SpringBoot自動(dòng)配置Quartz的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • java獲取中文拼音首字母工具類(lèi)定義與用法實(shí)例

    java獲取中文拼音首字母工具類(lèi)定義與用法實(shí)例

    這篇文章主要介紹了java獲取中文拼音首字母工具類(lèi)定義與用法,結(jié)合實(shí)例形式分析了java獲取中文拼音首字母工具類(lèi)的具體定義、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-10-10
  • Java 客戶(hù)端向服務(wù)端上傳mp3文件數(shù)據(jù)的實(shí)例代碼

    Java 客戶(hù)端向服務(wù)端上傳mp3文件數(shù)據(jù)的實(shí)例代碼

    這篇文章主要介紹了Java 客戶(hù)端向服務(wù)端上傳mp3文件數(shù)據(jù)的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • SpringMVC攔截器詳解

    SpringMVC攔截器詳解

    本篇文章主要介紹了SpringMVC攔截器配置及使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-07-07
  • Java四種遍歷Map的方法

    Java四種遍歷Map的方法

    今天小編就為大家分享一篇關(guān)于Java四種遍歷Map的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • SpringBoot下的值注入(推薦)

    SpringBoot下的值注入(推薦)

    這篇文章主要介紹了SpringBoot下的值注入(推薦)的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Spring中Bean創(chuàng)建完后打印語(yǔ)句的兩種方法

    Spring中Bean創(chuàng)建完后打印語(yǔ)句的兩種方法

    這篇文章主要介紹了Spring中Bean創(chuàng)建完后打印語(yǔ)句的兩種方法,一個(gè)是實(shí)現(xiàn)InitializingBean接口,另一個(gè)使用@Bean注解和initMethod屬性,通過(guò)代碼示例介紹的非常詳細(xì),感興趣的小伙伴可以參考閱讀
    2023-07-07
  • SpringBoot框架實(shí)現(xiàn)切換啟動(dòng)開(kāi)發(fā)環(huán)境和測(cè)試環(huán)境

    SpringBoot框架實(shí)現(xiàn)切換啟動(dòng)開(kāi)發(fā)環(huán)境和測(cè)試環(huán)境

    這篇文章主要介紹了SpringBoot框架實(shí)現(xiàn)切換啟動(dòng)開(kāi)發(fā)環(huán)境和測(cè)試環(huán)境,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Redis中的事務(wù)和Redis樂(lè)觀(guān)鎖詳解

    Redis中的事務(wù)和Redis樂(lè)觀(guān)鎖詳解

    這篇文章主要介紹了Redis中的事務(wù)和Redis樂(lè)觀(guān)鎖詳解,Redis事務(wù)是一個(gè)單獨(dú)的隔離操作:事務(wù)中的所有命令都會(huì)序列化、按順序地執(zhí)行,事務(wù)在執(zhí)行的過(guò)程中,不會(huì)被其他客戶(hù)端發(fā)送來(lái)的命令請(qǐng)求所打斷,需要的朋友可以參考下
    2023-12-12

最新評(píng)論

龙井市| 小金县| 蕲春县| 贵港市| 鄂伦春自治旗| 竹北市| 阳谷县| 方城县| 博客| 辽阳市| 湟中县| 读书| 阳信县| 蛟河市| 大宁县| 格尔木市| 肃北| 卢龙县| 民勤县| 浪卡子县| 大渡口区| 蒙城县| 汽车| 班戈县| 湖北省| 莆田市| 石阡县| 高雄县| 巫山县| 梁河县| 长宁区| 南乐县| 平乡县| 五台县| 绥滨县| 宣威市| 淳化县| 伊春市| 陈巴尔虎旗| 南雄市| 牙克石市|