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

mybatis中insert主鍵ID獲取和多參數(shù)傳遞的示例代碼

 更新時間:2021年03月22日 10:42:16   作者:Dark_King_  
這篇文章主要介紹了mybatis中insert主鍵ID獲取和多參數(shù)傳遞的示例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、插入數(shù)據(jù)主鍵ID獲取

一般我們在做業(yè)務(wù)開發(fā)時,經(jīng)常會遇到插入一條數(shù)據(jù)并使用到插入數(shù)據(jù)的ID情況。如果先插入在查詢的話需要多一次sql查詢,未免效率太低。因此mybatis也有提供插入數(shù)據(jù)并返回主鍵ID的方式。如下

1、Insert/update

1.1、屬性解釋

keyProperty

selectKey 語句結(jié)果應(yīng)該被設(shè)置的目標(biāo)屬性。如果希望得到多個生成的列,也可以是逗號分隔的屬性名稱列表。

resultType

結(jié)果的類型。MyBatis 通??梢酝扑愠鰜恚菫榱烁哟_定寫上也不會有什么問題。MyBatis 允許任何簡單類型用作主鍵的類型,包括字符串。如果希望作用于多個生成的列,則可以使用一個包含期望屬性的 Object 或一個 Map。

order

這可以被設(shè)置為 BEFORE 或 AFTER。如果設(shè)置為 BEFORE,那么它會首先選擇主鍵,設(shè)置 keyProperty 然后執(zhí)行插入語句。如果設(shè)置為 AFTER,那么先執(zhí)行插入語句,然后獲取主鍵字段;mysql數(shù)據(jù)庫自增長的方式order設(shè)置為After,oracle數(shù)據(jù)庫通過sequnce獲取主鍵order設(shè)置為Before

注意:自增長序號不是簡單的行數(shù)+1,而是序號最大值+1;既當(dāng)前10000條數(shù)據(jù),但主鍵ID到12000,則返回的為12001.而不是10001.

1.2、代碼示例

<insert id="insert1" parameterType="TUser" useGeneratedKeys="true"	keyProperty="id">
		insert into t_user (id, userName, realName,
		sex, mobile,
		email,
		note, position_id)
		values (#{id,jdbcType=INTEGER},
		#{userName,jdbcType=VARCHAR},
		#{realName,jdbcType=VARCHAR},
		#{sex,jdbcType=TINYINT}, #{mobile,jdbcType=VARCHAR},
		#{email,jdbcType=VARCHAR},
		#{note,jdbcType=VARCHAR},
		#{position.id,jdbcType=INTEGER})
	</insert>

該插入指令會取出主鍵并由ID字段來接收

2、selectKey

 1.1、屬性解釋

keyProperty

selectKey 語句結(jié)果應(yīng)該被設(shè)置的目標(biāo)屬性。如果希望得到多個生成的列,也可以是逗號分隔的屬性名稱列表。

resultType

結(jié)果的類型。MyBatis 通常可以推算出來,但是為了更加確定寫上也不會有什么問題。MyBatis 允許任何簡單類型用作主鍵的類型,包括字符串。如果希望作用于多個生成的列,則可以使用一個包含期望屬性的 Object 或一個 Map。

order

這可以被設(shè)置為 BEFORE 或 AFTER。如果設(shè)置為 BEFORE,那么它會首先選擇主鍵,設(shè)置 keyProperty 然后執(zhí)行插入語句。如果設(shè)置為 AFTER,那么先執(zhí)行插入語句,然后獲取主鍵字段;mysql數(shù)據(jù)庫自增長的方式order設(shè)置為After,oracle數(shù)據(jù)庫通過sequnce獲取主鍵order設(shè)置為Before

1.2、代碼示例

<insert id="insert2" parameterType="TUser">
 
		<selectKey keyProperty="id" order="AFTER" resultType="int">
			select
			LAST_INSERT_ID()
		</selectKey>
		insert into t_user (id, userName, realName,
		sex, mobile,
		email,
		note,
		position_id)
		values (#{id,jdbcType=INTEGER},
		#{userName,jdbcType=VARCHAR},
		#{realName,jdbcType=VARCHAR},
		#{sex,jdbcType=TINYINT}, #{mobile,jdbcType=VARCHAR},
		#{email,jdbcType=VARCHAR},
		#{note,jdbcType=VARCHAR},
		#{position.id,jdbcType=INTEGER})
	</insert>

二、查詢?nèi)绾蝹魅攵鄠€參數(shù)

1、使用map傳遞參數(shù);

特點:可讀性差,導(dǎo)致可維護性和可擴展性差,杜絕使用;

代碼示例

1、xml

<select id="selectByEmailAndSex1" resultMap="BaseResultMap"		parameterType="map">
		select
		<include refid="Base_Column_List" />
		from t_user a
		 where a.email like CONCAT('%', #{email}, '%') and
		 a.sex =#{sex}
	</select>

2、調(diào)用層

Map<String, Object> params = new HashMap<String, Object>();
		params.put("email", email);
		params.put("sex", sex);
		List<TUser> list1 = mapper.selectByEmailAndSex1(params);
		System.out.println(list1.size());

2、使用注解傳遞參數(shù);

特點:直觀明了,當(dāng)參數(shù)較少一般小于5個的時候,建議使用;

代碼示例

1、xml

<select id="selectByEmailAndSex2" resultMap="BaseResultMap">
		select
		<include refid="Base_Column_List" />
		from t_user a
		where a.email like CONCAT('%', #{email}, '%') and
		a.sex =	#{sex}
	</select>

2、調(diào)用層

Page<TUser> startPage = PageHelper.startPage(2, 3);
		List<TUser> list2 = mapper.selectByEmailAndSex2(email, sex);
		System.out.println(list2.size());

3、使用Java Bean的方式傳遞參數(shù);

特點:當(dāng)參數(shù)大于5個的時候,建議使用;

代碼示例

1、xml

<select id="selectByEmailAndSex3" resultMap="BaseResultMap"
		parameterType="com.enjoylearning.mybatis.entity.EmailSexBean">
		select
		<include refid="Base_Column_List" />
		from t_user a
		where a.email like CONCAT('%', #{email}, '%') and
		a.sex =	#{sex}
	</select>

2、調(diào)用層

EmailSexBean esb = new EmailSexBean();
		esb.setEmail(email);
		esb.setSex(sex);
		List<TUser> list3 = mapper.selectByEmailAndSex3(esb);
		System.out.println(list3.size());

到此這篇關(guān)于mybatis中insert主鍵ID獲取和多參數(shù)傳遞的示例代碼的文章就介紹到這了,更多相關(guān)mybatis多參數(shù)傳遞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot3讀取配置文件application.properties屬性值的幾種方式

    SpringBoot3讀取配置文件application.properties屬性值的幾種方式

    這篇文章主要介紹了SpringBoot3讀取配置文件application.properties屬性值的幾種方式,文中通過代碼示例給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-11-11
  • Spring security 如何開放 Swagger 訪問權(quán)限

    Spring security 如何開放 Swagger 訪問權(quán)限

    這篇文章主要介紹了Spring security 如何開放 Swagger 訪問權(quán)限操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Mybatis-Plus使用saveOrUpdate及問題解決方法

    Mybatis-Plus使用saveOrUpdate及問題解決方法

    本文主要介紹了Mybatis-Plus使用saveOrUpdate及問題解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Java Socket編程實例(三)- TCP服務(wù)端線程池

    Java Socket編程實例(三)- TCP服務(wù)端線程池

    這篇文章主要講解Java Socket編程中TCP服務(wù)端線程池的實例,希望能給大家做一個參考。
    2016-06-06
  • 使用graalvm為帶有反射功能的java代碼生成native?image的示例詳解

    使用graalvm為帶有反射功能的java代碼生成native?image的示例詳解

    graalvm讓native鏡像支持反射的關(guān)鍵是利用json提前告訴它哪些類的哪些方法會被反射調(diào)用,然后它就能力在運行時支持反射了,這篇文章主要介紹了如何使用graalvm為帶有反射功能的java代碼生成native?image,需要的朋友可以參考下
    2024-02-02
  • java、js中實現(xiàn)無限層級的樹形結(jié)構(gòu)方法(類似遞歸)

    java、js中實現(xiàn)無限層級的樹形結(jié)構(gòu)方法(類似遞歸)

    下面小編就為大家?guī)硪黄猨ava、js中實現(xiàn)無限層級的樹形結(jié)構(gòu)方法(類似遞歸)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • springboot中的RestTemplate使用詳解

    springboot中的RestTemplate使用詳解

    這篇文章主要介紹了springboot中的RestTemplate使用詳解,RestTemplate繼承自InterceptingHttpAccessor并且實現(xiàn)了RestOperations接口,其中RestOperations接口定義了基本的RESTful操作,這些操作在RestTemplate中都得到了實現(xiàn),需要的朋友可以參考下
    2023-09-09
  • Spring Cloud Zipkin服務(wù)端追蹤服務(wù)

    Spring Cloud Zipkin服務(wù)端追蹤服務(wù)

    這篇文章主要介紹了Spring Cloud Zipkin服務(wù)端追蹤服務(wù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • 圖解Java經(jīng)典算法快速排序的原理與實現(xiàn)

    圖解Java經(jīng)典算法快速排序的原理與實現(xiàn)

    快速排序是基于二分的思想,對冒泡排序的一種改進(jìn)。主要思想是確立一個基數(shù),將小于基數(shù)的數(shù)放到基數(shù)左邊,大于基數(shù)的數(shù)字放到基數(shù)的右邊,然后在對這兩部分進(jìn)一步排序,從而實現(xiàn)對數(shù)組的排序
    2022-09-09
  • struts2 中文亂碼的解決辦法分享

    struts2 中文亂碼的解決辦法分享

    這篇文章主要介紹了struts2 中文亂碼的解決辦法,需要的朋友可以參考下
    2014-02-02

最新評論

金乡县| 大名县| 七台河市| 海丰县| 辽阳县| 淮北市| 积石山| 乐陵市| 通山县| 宁陵县| 南岸区| 永定县| 昆山市| 武邑县| 镇巴县| 东安县| 霍城县| 湘潭县| 西贡区| 信丰县| 陵川县| 石城县| 白玉县| 临潭县| 吉木萨尔县| 普定县| 泸水县| 景东| 丹巴县| 中宁县| 蓬莱市| 北流市| 射洪县| 竹溪县| 驻马店市| 泰兴市| 沈阳市| 大埔县| 潞城市| 广东省| 洪雅县|