mybatis中mapper xml常用标签

一、SQL语句标签:

1、  

 

2、  

  

 insert into ordertable (order_id, cid, address,   

      create_date, orderitem_id)  

    values (#{orderId,jdbcType=VARCHAR},#{cid,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR},   

     #{createDate,jdbcType=TIMESTAMP}, #{orderitemId,jdbcType=VARCHAR})

   

3、  



delete from ordertable  

    where order_id = #{orderId,jdbcType=VARCHAR}  

  

4、  

   

  update ordertable  

    set cid = #{cid,jdbcType=VARCHAR},  

      address = #{address,jdbcType=VARCHAR},  

      create_date = #{createDate,jdbcType=TIMESTAMP},  

      orderitem_id = #{orderitemId,jdbcType=VARCHAR}  

    where order_id = #{orderId,jdbcType=VARCHAR}  

   

1》需要配置的属性:

★id=“xxxx” ——表示此段sql执行语句的唯一标识,也是接口的方法名称【必须一致才能找到】

★parameterType=“xxxx” ——表示该sql语句中需要传入的参数, 类型要与对应的接口方法的类型一致【可选】

★resultMap=“xxx”—— 定义出参,调用已定义的映射管理器的id值

★resultType=“xxxx”——定义出参,匹配普通Java类型或自定义的pojo【出参类型若不指定,将为语句类型默认类型,如语句返回值为int】

2》注意: 至于为何 语句的返回值类型为什么是int,有过JDBC操作经验的朋友可能会有印象,增删改操作实际上返回的是操作的条数。而Mybatis框架本身是基于JDBC的,所以此处也沿袭这种返回值类型。

3》传参和取值:mapper.xml 的灵活性还体现在SQL执行语句可以传参,参数类型通过parameterType= “” 定义

★取值方式1:#{value jdbcType = valuetype}:jdbcType 表示该属性的数据类型在数据库中对应的类型,如 #{user jdbcType=varchar} 等价于 String username;

★取值方式2:${value } : 这种方式不建议大量使用,可能会发送sql注入而导致安全性问题。一般该取值方式可用在非经常变化的值上,如orderby ${columnName};

二、sql片段标签:通过该标签可定义能复用的sql语句片段,在执行sql语句标签中直接引用即可。这样既可以提高编码效率,还能有效简化代码,提高可读性

1》 需要配置的属性:id="" ———表示需要改sql语句片段的唯一标识

 2》引用:通过标签引用,refid="" 中的值指向需要引用的中的id=""属性
1、  

  

    o.order_id,o.cid,o.address,o.create_date,o.orderitem_id,i.orderitem_id,i.product_id,i.count  

    

   

三、映射管理器resultMap:映射管理器,是Mybatis中最强大的工具,使用其可以进行实体类之间的关系,并管理结果和实体类间的映射关系

1》需要配置的属性:

id=""——表示这个映射管理器的唯一标识,外部通过该值引用;

type ="" ——表示需要映射的实体类;

2》 需要配置的参数:

标签指的是:结果集中结果唯一的列【column】 和 实体属性【property】的映射关系,

3》注意:标签管理的列未必是主键列,需要根据具体需求指定;

  标签指的是:结果集中普通列【column】 和 实体属性【property】的映射关系;

4》 需要维护的关系:所谓关系维护是值在主表查询时将其关联子表的结果也查询出来

四:常用的动态语句标签:通过动态sql标签可以进行条件判断,条件遍历等操作从而满足结果的需要

1》 : 使用其可以代替sql语句中的where关键字,一般防止在条件查询的最外层

2》:条件判断标签,配置属性test=" 条件字符串 ",判断是否满足条件,满足则执行,不满足则跳过

  

3》:常用于更新语句中,替代 sql中的“set”关键字,特别是在联合进行判断是,可以有效方式当某个参数为空或者不合法是错误的更新到数据库中

  

   update orderitem  

     

       

       product_id = #{productId,jdbcType=VARCHAR},  

       

       

       count = #{count,jdbcType=INTEGER},  

       

     

   where orderitem_id = #{orderitemId,jdbcType=VARCHAR}  

   

4》 标签组:也是一个用于条件判断的标签组,和的不同之处在于条件从进入,去匹配中的添加,一旦匹配马上结束;若到找不到匹配项,将执行中的语句;可以理解为是 && 关系 是 || 关系

       

     

5》标签:该标签的作用是遍历集合类型的条件

foreach元素的属性主要有 item,index,collection,open,separator,close。

    item表示集合中每一个元素进行迭代时的别名.

    index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置.

    open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔 符.

    close表示以什么结束

用来循环 collection : 用来指定循环的数据的类型 可以填的值有:array,list,map item

  

     delete from product where product_Id in  

       

         #{productId,jdbcType = VARCHAR}  

       

    

常用列表查询demo:

 
    

一对一查询:尽量少去使用collection,association 标签去查询,因为如果查询有10条list,就会10次去查询关联表,io数据库的次数就多,尽量一条sql用搞定,一对多可以使用group_concat()搞定

//查询映射对象
 
    	  	
    


  

 
	
        
        
        
        
        
        
        
        
        
        
        
        
        
    

分页:


你可能感兴趣的:(java)