2.在mybatis调用存储过程时,传入参数的名字可以不用跟存储过程定义的参数名一致
4.parameterMap(常用于存储过程)和resultMap类似,表示将查询结果集中列值的类型一一映射到java对象属性的类型上,在开发过程中不 推荐这种方式。
parameterType="java.util.Map" statementType="CALLABLE"
resultType="java.util.HashMap 7.数据库为Date,java类型也为Date,mybatis中的jdbcType=TIMESTAMP 时间入库后才精确到秒
9.新增记录返回id
<!--新增用户关联账户信息-->
<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> 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>
12.对oracle,使用MyBatis框架做更新操作时,如果不指定jdbcType,在该字段需要更新的内容为空时,就会出现1111错误,也就是无效的列类型,这个时候你就要使用jdbcType
14.参数为集合的查询
select*from kj_region a where pregionid in
<foreach item="item" index="index" collection="list" open="("separator="," close=")">
#{item}
</foreach>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>18.PageHelper实现分页原理:配置在mybatis-config.xml中,通过实现ibatis的Interceptor接口成为一个拦截器,SqlSessionFactory加载的时候将该拦截器加入拦截器链,通过PageHelper.startPage(...)将分页参数注入进去,执行查询sql前会进入拦截器的方法对sql语句进行改变
19.条件判断用in时,可使用如下
<if test="riskCodeList != null"> and b.riskCode in <foreach collection="riskCodeList" index="index" item="riskCode" open="(" separator="," close=")"> #{riskCode} </foreach> </if>
20.<如果不用cdata,可以用 < 代替 > 用 >21. 传集合查询的方式: 字段名 in ${deleteResourceEids}