亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mybatis?mapper.xml中怎么根據數據庫類型選擇對應SQL語句

發布時間:2022-01-23 14:37:23 來源:億速云 閱讀:485 作者:小新 欄目:開發技術

這篇“mybatis mapper.xml中怎么根據數據庫類型選擇對應SQL語句”文章,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要參考一下,對于“mybatis mapper.xml中怎么根據數據庫類型選擇對應SQL語句”,小編整理了以下知識點,請大家跟著小編的步伐一步一步的慢慢理解,接下來就讓我們進入主題吧。

mapper.xml根據數據庫類型選擇對應SQL語句

1、spring-database.xml文件中配置

  <bean id="vendorProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="properties">
      <props>
        <prop key="DB2">db2</prop>
        <prop key="Oracle">oracle</prop>
        <prop key="MySQL">mysql</prop>
      </props>
    </property>
   </bean>
   <bean id="databaseIdProvider" class="org.apache.ibatis.mapping.VendorDatabaseIdProvider">
    <property name="properties" ref="vendorProperties"/>
  </bean>

對于sessionFactory的配置,主要是標紅的語句一定要有,其它按照自己原有的配置走。

<!-- sessionFactory 將spring和mybatis整合 -->
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 <property name="dataSource" ref="dataSource" />
 <property name="databaseIdProvider" ref="databaseIdProvider" />
 <property name="configLocation" value="classpath:mybatis-config.xml" />
 <property name="mapperLocations"
 value="classpath*:/com/sunyard/cop/IF/mybatis/mapping/*.xml" /> 
 <property name="plugins">
     <array>
       <bean class="com.github.pagehelper.PageInterceptor">
         <property name="properties">
           <!--使用下面的方式配置參數,一行配置一個,后面會有所有的參數介紹 -->
           <value>
         helperDialect=oracle
         reasonable=true
         supportMethodsArguments=true
         params=count=countSql
         autoRuntimeDialect=true 
       </value>
         </property>
       </bean>
     </array>
         </property>
 </bean>

2、mapper.xml文件中配置

    <select id="selectByUserNo" databaseId="mysql"   parameterType="java.lang.String" resultMap="UserResultMap">
 select * from SM_USERS_TB
    </select>
    <select id="selectByUserNo"  parameterType="java.lang.String" resultMap="UserResultMap">
 select * from SM_USERS_TB
    </select>

若寫上databaseId = "mysql",則在數據源為mysql類型時,自動執行該SQL語句,若不寫databaseId ,且同時存在相同ID的SQL語句,則只要是非mysql數據庫的數據源,都會調用該條SQL語句。

mapper.xml動態SQL語句用法

mybatis?mapper.xml中怎么根據數據庫類型選擇對應SQL語句

用于實現動態SQL的元素主要有

if

用于判斷  示例

<update id="upda" parameterType="User">
		update smbms_user
		<set>
                <!--修改時可以判斷userCode是否是空的如果不為空就把數據庫中這一列的值更改掉
                如果為空就不修改這一列數據庫這一列的值也不會為Null-->
			<if test="userCode!=null and userCode!=''">
				userCode=#{userCode},
			</if>
			<if test="userName!=null and userName!=''">
				userName=#{userName},
			</if>
			<if test="userPassword!=null and userPassword!=''">
				userPassword=#{userPassword},
			</if>
			<if test="gender!=null and gender!=''">
				gender=#{gender},
			</if>
			<if test="phone!=null and phone!=''">
				phone=#{phone},
			</if>
			<if test="address!=null and address!=''">
				address=#{address},
			</if>
			<if test="userRole!=null and userRole!=''">
				userRole=#{userRole},
			</if>
			<if test="createdBy!=null and createdBy!=''">
				createdBy=#{createdBy},
			</if>
		</set>
		where id=#{id}
	</update>

trim

  • trim 屬性 prefix suffix prefixOverrides suffixOverrides 更靈活地去除多余關鍵字 替代where和set

  • if+trim 使用if+trim替代if+set進行更新用戶表數據,效果一樣的 如下:

<update id ="modify" parameterType="User">
update smbms_user
<trim prefix="set" suffixOverrides="," suffix="where id = #{id}">	
	<if test="userCode != null">userCode = #{userCode},</if>
	<if test="userName!= null">userCode = #{userName },</if>
	<if test="userPassword!= null">userPassword=#{userPassword },</if>
</trim>
</update>

其中:

  • prefix表示有一個if成立則插入where語句

  • suffix表示后綴,插入到最后,與perfix正好相反

  • suffixOverrides="xxx"表示如果最后生成的sql語句多一個xxx,則自動去掉

  • prefixOverrides的意思是去掉前綴,和suffixOverrides的使用正好相反

這里如果任意一個<if>條件為true,<trim>元素會插入WHERE,并且移除緊跟where后面的(and或or) 

where

    SELECT u.*,r.roleName,r.roleCode FROM smbms_user u INNER JOIN smbms_role r ON u.userrole=r.id 
    <where>
            <!-- where相當于  select * from pet where id=1 中的where一樣  -->
			<if test="usercode !=null and usercode !=''">
				AND userCode LIKE CONCAT('%',#{usercode},'%')
			</if>
			<if test="userrole!=0">
				AND userRole=#{userrole}
			</if>
			<if test="gender!=null and gender!=0">
				AND gender=#{gender} 
			</if>
	</where>

set

<update id="upda" parameterType="User">
		update smbms_user
		<set><!-- 與修改時搭配使用我們修改set的sql語句的‘,'的最后一列會被自動省略 -->
			<if test="userCode!=null and userCode!=''">
				userCode=#{userCode},
			</if>
			<if test="userName!=null and userName!=''">
				userName=#{userName},
			</if>
			<if test="userPassword!=null and userPassword!=''">
				userPassword=#{userPassword},
			</if>
			<if test="gender!=null and gender!=''">
				gender=#{gender},
			</if>
			<if test="phone!=null and phone!=''">
				phone=#{phone},
			</if>
			<if test="address!=null and address!=''">
				address=#{address},
			</if>
			<if test="userRole!=null and userRole!=''">
				userRole=#{userRole},
			</if>
			<if test="createdBy!=null and createdBy!=''">
				createdBy=#{createdBy},
			</if>
		</set>
		where id=#{id}
	</update>

choose(when、otherwise)

相當于Java中switch語句 當when有條件滿足的時候,就跳出choose

<choose>
	<when test ="條件1"> …</when>
	<when test ="條件2"> …</when>
	<when test ="條件3"> …</when>
	…
	<otherwise>…</otherwise>
</choose>	

foreach

迭代一個集合,通常用于in條件 屬性 item index collection:必須指定 list array map-key open separator close

<select id="getUserName" resultType="User" parameterType="java.util.List">
		select * from smbms_user where userCode in
		<foreach collection="list" open="(" close=")" item="userCode" separator=",">
			#{userCode}
		</foreach>
	</select>

以上是“mybatis mapper.xml中怎么根據數據庫類型選擇對應SQL語句”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新源县| 盐边县| 湟源县| 新竹市| 喜德县| 惠州市| 阿尔山市| 拉萨市| 潮安县| 饶阳县| 三台县| 镇江市| 磐安县| 陆川县| 都江堰市| 建昌县| 宾阳县| 屏山县| 黄平县| 迁西县| 临猗县| 石河子市| 新民市| 安新县| 中西区| 舟曲县| 云龙县| 都江堰市| 淄博市| 泽州县| 吴忠市| 尚志市| 富阳市| 泽普县| 麟游县| 汝阳县| 井陉县| 盐亭县| 门源| 巫山县| 昌平区|