使用MyBatis如何动态调用SQL标签

今天就跟大家聊聊有关使用MyBatis如何动态调用SQL标签,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

成都创新互联是一家集网站建设,前进企业网站建设,前进品牌网站建设,网站定制,前进网站建设报价,网络营销,网络优化,前进网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

1、动态SQL片段

通过SQL片段达到代码复用

  
     
        select count(*) 
     
     
        select * 
     
     
        from icp 
         
             
                name like '%$name$%' 
             
             
                path like '%path$%' 
             
             
                area_id = #area_id# 
             
             
                hided = #hided# 
             
         
         
             
                 
                    limit #_start#, #_size# 
                 
             
         
     
     
         
         
     
     
         
         
    

2、数字范围查询

所传参数名称是捏造所得,非数据库字段,比如_img_size_ge、_img_size_lt字段                   

  
                = #_img_size_ge# 
            ]]> 
             
             
                 
            

多次使用一个参数也是允许的      

 
                = #_now# 
                   ]]> 
             
             
                 
            

      3、时间范围查询           

    
                 
                    = #_starttime# 
                    and createtime < #_endtime# 
                 ]]> 
                 
            

  4、in查询                   

   
                state in ('$_in_state$') 
            

 5、like查询                 

   
                (chnameone like '%$chnameone$%' or spellinitial like '%$chnameone$%') 
             
             
                chnametwo like '%$chnametwo$%' 
            

6、or条件                  

  
                 
            
 
             
                 
            

7、where子查询              

  
                 
                     
                        code not in 
                        (select t.contentcode 
                        from cms_ccm_programcontent t 
                        where t.contenttype='MZNRLX_MA' 
                        and t.programcode = #exprogramcode#) 
                     
                 
            
     
        select * 
        from cms_ccm_material 
        where code in 
        (select t.contentcode 
        from cms_ccm_programcontent t 
        where t.contenttype = 'MZNRLX_MA' 
        and programcode = #value#) 
        order by updatetime desc 
    

    9、函数的使用 

   
     
        insert into rulemaster( 
        name, 
        createtime, 
        updatetime, 
        remark 
        ) values ( 
        #name#, 
        now(), 
        now(), 
        #remark# 
        ) 
         
            select LAST_INSERT_ID() 
         
     
     
     
        update rulemaster set 
        name = #name#, 
        updatetime = now(), 
        remark = #remark# 
        where id = #id# 
    

10、map结果集  

  
     
        select count(a.*) 
     
     
        select a.id        vid, 
        a.img       imgurl, 
        a.img_s     imgfile, 
        b.vfilename vfilename, 
  b.name      name, 
        c.id        sid, 
        c.url       url, 
        c.filename  filename, 
        c.status    status 
     
     
        From secfiles c, juji b, videoinfo a 
        where 
        a.id = b. videoid 
        and b.id = c.segmentid 
        and c.status = 0 
        order by a.id asc,b.id asc,c.sortnum asc 
         
             
                 
                    limit #_start#, #_size# 
                 
             
         
     
     
     
         
         
     
     
     
         
         
    

11、trim

 trim是更灵活的去处多余关键字的标签,他可以实践where和set的效果。

 where例子的等效trim语句:

Xml代码 

  
  
  SELECT * from STUDENT_TBL ST  
    
      
      ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')  
      
      
      AND ST.STUDENT_SEX = #{studentSex}  
      
    

set例子的等效trim语句:

Xml代码 

  
  
  UPDATE STUDENT_TBL  
    
      
      STUDENT_TBL.STUDENT_NAME = #{studentName},  
      
      
      STUDENT_TBL.STUDENT_SEX = #{studentSex},  
      
      
      STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},  
      
      
      STUDENT_TBL.CLASS_ID = #{classEntity.classID}  
      
    
  WHERE STUDENT_TBL.STUDENT_ID = #{studentID};  

12、choose (when, otherwise)

         有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。MyBatis提供了choose 元素,按顺序判断when中的条件出否成立,如果有一个成立,则choose结束。当choose中所有when的条件都不满则时,则执行 otherwise中的sql。类似于Java 的switch 语句,choose为switch,when为case,otherwise则为default。

         if是与(and)的关系,而choose是或(or)的关系。

         例如下面例子,同样把所有可以限制的条件都写上,方面使用。选择条件顺序,when标签的从上到下的书写顺序:

Xml代码 

  
  
  SELECT * from STUDENT_TBL ST  
    
      
        
          ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')  
        
        
          AND ST.STUDENT_SEX = #{studentSex}  
        
        
        AND ST.STUDENT_BIRTHDAY = #{studentBirthday}  
        
        
        AND ST.CLASS_ID = #{classEntity.classID}  
        
        
        
      
    

看完上述内容,你们对使用MyBatis如何动态调用SQL标签有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


本文标题:使用MyBatis如何动态调用SQL标签
文章起源:http://ybzwz.com/article/jsciso.html