mybatis mapper.xml中如何根据数据库类型选择对应SQL语句

mapper.xml根据数据库类型选择对应SQL语句

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

  
    
      
        db2
        oracle
        mysql
      
    
   
   
    
  

对于sessionFactory的配置,主要是标红的语句一定要有,其它按照自己原有的配置走。


 
 
 
 
  
 
     
       
         
           
           
         helperDialect=oracle
         reasonable=true
         supportMethodsArguments=true
         params=count=countSql
         autoRuntimeDialect=true 
       
         
       
     
         
 

2、mapper.xml文件中配置

    
    

若写上databaseId = "mysql",则在数据源为mysql类型时,自动执行该SQL语句,若不写databaseId ,且同时存在相同ID的SQL语句,则只要是非mysql数据库的数据源,都会调用该条SQL语句。

mapper.xml动态SQL语句用法

mybatis mapper.xml中如何根据数据库类型选择对应SQL语句_第1张图片

用于实现动态SQL的元素主要有

if

用于判断  示例


		update smbms_user
		
                
			
				userCode=#{userCode},
			
			
				userName=#{userName},
			
			
				userPassword=#{userPassword},
			
			
				gender=#{gender},
			
			
				phone=#{phone},
			
			
				address=#{address},
			
			
				userRole=#{userRole},
			
			
				createdBy=#{createdBy},
			
		
		where id=#{id}
	

trim

  • trim 属性 prefix suffix prefixOverrides suffixOverrides 更灵活地去除多余关键字 替代where和set
  • if+trim 使用if+trim替代if+set进行更新用户表数据,效果一样的 如下:

update smbms_user
	
	userCode = #{userCode},
	userCode = #{userName },
	userPassword=#{userPassword },


 

其中:

  • prefix表示有一个if成立则插入where语句
  • suffix表示后缀,插入到最后,与perfix正好相反
  • suffixOverrides="xxx"表示如果最后生成的sql语句多一个xxx,则自动去掉
  • prefixOverrides的意思是去掉前缀,和suffixOverrides的使用正好相反

这里如果任意一个条件为true,元素会插入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 
    
            
			
				AND userCode LIKE CONCAT('%',#{usercode},'%')
			
			
				AND userRole=#{userrole}
			
			
				AND gender=#{gender} 
			
	

set


		update smbms_user
		
			
				userCode=#{userCode},
			
			
				userName=#{userName},
			
			
				userPassword=#{userPassword},
			
			
				gender=#{gender},
			
			
				phone=#{phone},
			
			
				address=#{address},
			
			
				userRole=#{userRole},
			
			
				createdBy=#{createdBy},
			
		
		where id=#{id}
	

choose(when、otherwise)

相当于Java中switch语句 当when有条件满足的时候,就跳出choose


	
	
	
	

foreach

迭代一个集合,通常用于in条件 属性 item index collection:必须指定 list array map-key open separator close

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

你可能感兴趣的:(mybatis mapper.xml中如何根据数据库类型选择对应SQL语句)