首先看原来代码
<insert id="insert" parameterType="Class" >
<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
SELECT LAST_INSERT_ID()
</selectKey>
insert into allocate_order (allocate_code, created_at, create_user,
updated_at, update_user, dr,
ts, version)
values (#{code,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, #{createUser,jdbcType=VARCHAR},
#{updatedAt,jdbcType=TIMESTAMP}, #{updateUser,jdbcType=VARCHAR}, #{dr,jdbcType=CHAR},
#{ts,jdbcType=TIMESTAMP}, #{version,jdbcType=INTEGER})
</insert>
在字段确定,但是在没有值的时候,我们需要给他们添加默认值,更改后代码为
<insert id="insert" parameterType="Class" >
<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
SELECT LAST_INSERT_ID()
</selectKey>
insert into allocate_order (dr,allocate_code,create_user,update_user,version) values (
<choose>
<when test="dr != null and dr != '' ">
#{dr,jdbcType=CHAR},
</when>
<otherwise>
'1',
</otherwise>
</choose>
<choose>
<when test="code != null and code != '' ">
#{code,jdbcType=VARCHAR},
</when>
<otherwise>
'',
</otherwise>
</choose>
<choose>
<when test="createUser != null and createUser != '' ">
#{createUser,jdbcType=VARCHAR},
</when>
<otherwise>
'',
</otherwise>
</choose>
<choose>
<when test="updateUser != null and updateUser != '' ">
#{updateUser,jdbcType=VARCHAR},
</when>
<otherwise>
'',
</otherwise>
</choose>
<choose>
<when test="version != null and version != '' ">
#{version,jdbcType=INTEGER}
</when>
<otherwise>
1
</otherwise>
</choose>)
</insert>
这里是用了choose标签when标签和otherwise标签,结合使用可以针对不同情况作出反应
下面贴一个比较典型的操作 一个choose标签下可以有多个情况,类似在判断的时候的if ,else if,else这些
<select id="findUserInfoByOneParam" parameterType="Map" resultMap="UserInfoResult">
select * from userinfo
<choose>
<when test="searchBy=='department'">
where department=#{department}
</when>
<when test="searchBy=='position'">
where position=#{position}
</when>
<otherwise>
where gender=#{gender}
</otherwise>
</choose>
<if test="gender!=null">
and gender=#{gender}
<span style="white-space:pre"> </span></if>
</select>