mybatis常见注意事项

1.用resultType的时候,要保证结果集的列名与java对象的属性相同,而resultMap则不用,
常用 select 列名 as 对象属性名 .....from 表名 来转换

2.在mybatis调用存储过程时,传入参数的名字能够不用跟存储过程定义的参数名一致
java

3.parameterType或parameterMap能够不写。可是须要在mapper接口中采用注解的方式将参数注解进去
eg: getDefultBankCardByMobile( @Param("mobileNo") String mobileNo) ,注解中的参数名与xml中的名字一致

4.parameterMap(经常使用于存储过程)和resultMap相似,表示将查询结果集中列值的类型一一映射到java对象属性的类型上,在开发过程当中不 推荐这种方式。数据库

5.调用存储过程比较简单的方式:

parameterType="java.util.Map" statementType="CALLABLE"                          
resultType="java.util.HashMap 复制代码
6.若是是查询,则必须有resultType或resultMap其中一个,resultType不必定非要写 包名+类名

7.数据库为Date,java类型也为Date,mybatis中的jdbcType=TIMESTAMP 时间入库后才精确到秒
bash

8.
select 传入类型
1.若是参数不是对象而是多个参数,须要在dao层的方法中加注解参数
2.参数为map,直接取map的key
insert 传入类型
1.map: insert时直接根据传入map的key取值便可
传出类型 通常没有
update 传入类型
1.String: 若是是一个参数通常不须要注解参数
传出类型 通常不写,默认返回int
delete 传入类型
1.单个属性
传出类型 通常不写,默认返回int

9.新增记录返回id
mybatis

<!--新增用户关联帐户信息-->
<insert id="saveLinkUserAccInfo" parameterType="linkUserAccInfo">  
<selectKey keyProperty="linkNo" resultType="String" order="BEFORE">    
   select sys_guid() from dual  
</selectKey>  
INSERT INTO LINK_USER_ACC_INFO  (LINK_NO, USER_NO)  VALUES
(#{linkNo, jdbcType=VARCHAR},#{userNo, jdbcType=VARCHAR)
</insert>                复制代码
10.这种写法不须要去掉AND就能够识别 

SELECT

<include refid="accChkResultColumns"/>

FROM acc_chk_result a

<include refid="accChkResultJoins"/>
<where>
   <if test="beginTradeDay != null and endTradeDay != null and beginTradeDay != '' and endTradeDay != ''">
      AND a.work_day BETWEEN to_char(#{beginTradeDay},'yyyymmdd') AND to_char(#{endTradeDay},'yyyymmdd')
   </if>
</where>
复制代码
11.decimal(numeric ) 同义,都有两个参数:p(精度)和s(小数位数)

12.对oracle,使用MyBatis框架作更新操做时,若是不指定jdbcType,在该字段须要更新的内容为空时,就会出现1111错误,也就是无效的列类型,这个时候你就要使用jdbcType
oracle

13.选择性update的时候,后面的逗号要加,最后一个逗号不用删,会自动解析

14.参数为集合的查询app

select*from kj_region a where  pregionid in
    <foreach item="item" index="index" collection="list" open="("separator="," close=")">           
       #{item} 
    </foreach>复制代码
15.1个mapper方法中能够有几个操做,好比更新,删除等,使用";"隔开

16.插入集合框架

<insert id="addRItem" parameterType="java.util.List"> 
   insert into lzf_rental_item_detailsl ( id, rentalInfoId,itemName, number, remark ) values 
  <foreach collection="list" item="item" index= "index" separator =","> 
   ( #{item.id}, #{item.rentalInfoId}, #{item.itemName}, #{item.number}, #{item.remark} )
  </foreach> 
</insert>复制代码
相关文章
相关标签/搜索