08-MyBatis的一些使用细节

目录
  • CDATA 标签的使用
  • Mybatis都有哪些Executor执行器?
  • Mybatis能执行一对一、一对多的关联查询
  • Dao接口里的方法,参数不同时,方法能重载吗
  • ${}和#{}的区别是什么
  • if条件判断
  • 遍历 map中的list,并使用in



CDATA 标签的使用

术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。在 XML 元素中,"<" 和 "&" 是非法的。

  • "<" 会产生错误,因为解析器会把该字符解释为新元素的开始。
  • "&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。

某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。

CDATA 部分中的所有内容都会被解析器忽略。CDATA 部分由 "" 开始,由 "" 结束:

在mapper文件中写sql语句时,遇到特殊字符时,如:< 等,建议使用 sql 语句 标记,将sql语句包裹住,不被解析器解析

select t1.* from tbl_xxx t1 left join tbl_yyy t2 on t1.aa = t2.aa
where t2.Channel = #{channel}

and t1.EXECUTION_STATE != '1'
order by t1.HU_DATE

例如这里查询是需要用到大于等于这样的符号,但是XML中"<"符号是非法的,无法解析.后台也会报错,所以我们在这里用CDATA将SQL包裹起来。这样就可以正常进行解析了。

Mybatis都有哪些Executor执行器?

Mybatis有三种基本的Executor执行器,SimpleExecutor、ReuseExecutor、BatchExecutor。

  • SimpleExecutor:每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象。

  • ReuseExecutor:执行update或select,以sql作为key查找Statement对象,存在就使用,不存在就创建,用完后,不关闭Statement对象,而是放置于Map内,供下一次使用。简言之,就是重复使用Statement对象。

  • BatchExecutor:执行update(没有select,JDBC批处理不支持select),将所有sql都添加到批处理中(addBatch()),等待统一执行(executeBatch()),它缓存了多个Statement对象,每个Statement对象都是addBatch()完毕后,等待逐一执行executeBatch()批处理。与JDBC批处理相同。

作用范围:Executor的这些特点,都严格限制在SqlSession生命周期范围内。

Mybatis能执行一对一、一对多的关联查询

一对一:association

  
  
  
      
              
              
              
                  
                  
                  
                  
                      
                      
                  
              
      
      
      
      
      
      
          
          
          
          
      
      
      
      

一对多:collection

  
  
  
  
  
      
      
      
      
          
          
          
              
          
              
              
          
              
          
              
               
          
      
      
      
      
          
          
              
              
              
              
          
      
      
      
      

Dao接口里的方法,参数不同时,方法能重载吗

不能重载。因为在进行xml配置的时候会跟Dao中的方法名一一对应。xml中只能配置一个标签和对应方法匹配。(在Mybatis中,每一个 select * from abs_senti_info name = #{assetName} AND senti_score > 0

遍历 map中的list,并使用in

orgID:为传过来的map中的list的key值
item:是遍历之后的key值
open:开始的标签, (
close:结束的标签,)
separator:每次遍历结束之后,末尾会添加,


		#{orID}


你可能感兴趣的:(08-MyBatis的一些使用细节)