1:首先使用模糊查询的时候
1: 在mysql 中 select <include refid="Base_Column_List" /> FROM a_ll_dist_g_reas_record <where> <if test="null != orgName and '' != orgName"> org_no like concat('%',#{orgName},'%') </if> <if test="null != pReasCode and '' != pReasCode"> and orgName like concat('%',#{orgName},'%') </if> <if test="null != reasCode and '' != reasCode"> and reasCode like concat('%',#{reasCode },'%') </if> <if test="null != timeFlag and '' != timeFlag"> and timeFlag like concat('%',#{timeFlag },'%') </if>
2:使用Orcale的时候: 需要 多包一个 concat(concat)
select <include refid="Base_Column_List" /> FROM a_ll_dist_g_reas_record <where> <if test="null != orgName and '' != orgName"> orgName like concat(concat('%',#{orgName}),'%') </if> <if test="null != pReasCode and '' != pReasCode"> and pReasCode like concat(concat('%',#{pReasCode }),'%') </if> <if test="null != reasCode and '' != reasCode"> and reasCode like concat(concat('%',#{reasCode }),'%') </if> <if test="null != timeFlag and '' != timeFlag"> and timeFlag like concat(concat('%',#{timeFlag }),'%') </if> 使用${} <if test="parameter.indexName != null and parameter.indexName != ''"> and INDEX_NAME like '%${parameter.indexName}%' </if> 时间范围: 将字符串类型的时间转换为date 类型 <![CDATA[]]> 中的--> [] 的写什么就是什么 <![CDATA[ and LOGIN_TIME >= to_date(#{startLoginTime},'yyyy-MM-dd') ]]> <![CDATA[ and LOGIN_TIME <= to_date(#{endLoginTime},'yyyy-MM-dd') ]]>
3:使用Oracle 连接mybatis 时, 因为有一些业务场景规定,数据库中有一下字段,在前端为非必填字段 ,所以在插入数据的时候,会少携带一下参数,但是Oracle 数据库在使用mybatis 的时候,不允许插入数据为空,就会抛出报错信息。这时我们需要在sql 语句中添加 类型字段
例子如下:
UPDATE a_ll_dist_g_reas_record set org_no = #{orgNo,jdbcType=VARCHAR}, org_name = #{orgName,jdbcType=VARCHAR}, time_flag = #{timeFlag,jdbcType=VARCHAR}, rep_flag = #{repFlag,jdbcType=VARCHAR}, p_reas_code = #{pReasCode,jdbcType=VARCHAR}, reas_code = #{reasCode,jdbcType=VARCHAR}, reas_desc = #{reasDesc,jdbcType=VARCHAR}, rep_code = #{repCode,jdbcType=VARCHAR}, oper_name = #{operName,jdbcType=VARCHAR} WHERE id = #{id}
4:在判断时间类型的时候 需要注意不要把时间字段判断 空字符串
关于时间范围的搜索条件 <if test="startTime != null"> and create_time >= #{startTime} </if> <if test="endTime != null"> and create_time <= #{endTime} </if> 不要判断是否为空字符串 <if test="null != createTime"> create_time, </if>