insert语句返回oracle序列主键:
最普通的,我的表主键是序列来生成(由于是oracle),所以我需要插入时候生成序列主键并且返回,以下为配置:
<insert id="save" parameterType="cn.com.blossomframework.services.core.domain.Navigation">
<selectKey resultType="int" keyProperty="id" order="BEFORE">
select s_navigation.nextval as id from dual
</selectKey>
insert into navigation (
id,name,type,order,isshow,cid,portletid,uuid)
values (
#{id},#{name},#{type},#{order},#{isshow},#{cid},#{portletid},#{uuid})
</insert>
selectKey中order属性的值是不同的,BEFORE先选择主键,设置keyProperty的值然后执行插入语句。 AFTER是先执行插入语句,然后执行selectKey。
条件查询时候的入参不固定 :
<select id="findAll" resultMap="navigations">
select * from navigation
<where>
<if test="portetid != null">
login_name=#{portletid}
</if>
<if test="uuid != null">
and name=#{uuid}
</if>
</where>
</select>
如果有uuid和portletid这任意其中之一的入参,则执行条件查询,否则为普通查询
<update id="update" parameterType="int" >
update navigation
<set>
<if test="name != null">name=#{name},</if>
<if test="isshow != null">isshow=#{isshow},</if>
<if test="cid != null">cid=#{cid}</if>
</set>
where id=#{id}
</update>
update方法的不固定入参
处理clob,blob类型,第一篇博客blablabla写了一堆代码,在这里简单配置一个typehandler就搞定
<update id="update" parameterType="cn.com.blossomframework.services.core.domain.WebContent" >
update webcontent
set title=#{title},content=#{content,typeHandler=org.apache.ibatis.type.ClobTypeHandler}
where id=#{id}
</update>
blob的类型处理器为 B lobTypeHandler(低版本的使用的是spring orm包的typehandler,只支持mybatis2.0版本,现在MyBatis已经3.2了,Spring太不给面子了,和hibernate是好基友,spring已经支持hibernate4了)
select * from 表名 where 列 in (1,2,3)
<select id="findAns" resultMap="announcements">
select *
from navigation
where idref in
<foreach item="cid" index="index" collection="array"
open="(" separator="," close=")">
#{cid}
</foreach>
</select>
还有更多的动态sql高级应用和关联查询,具体参看git上的官方文档! http://mybatis.github.io/mybatis-3/zh/configuration.html#settings