前两天,领导给了我一个任务,写一个查询接口和一个更新接口,跟简单的任务,但是写了好几天才写出来,至于写的过程就不叙述了,写完之后感觉很丢人的。
我总结一下写的知识点和自己的感受
先说一下update sql 有三个没有关联的表,里面有三个相同的字段,前端把这三个参数传过来,需要根据其中两个字段,查出三个表中对应的记录 修改另一个字段,简单的方式,分别查出记录,如果有就修改,没有则跳过。这里不叙述了。这样得写6个mapper方法。
接下来说一下<selectKey>这个标签
简单来说这是一个在执行update insert 语句时 之前之后执行的一个select 语句 用于返回一个主键id或者返回一条记录数
<selectKey keyProperty="count" resultType="int" order="BEFORE"> SELECT count(1) FROM DUAL WHERE ShopID =#{id,jdbcType=VARCHAR} </selectKey>
keyProperty 是返回给pojo对象的一个属性
resultType 返回的类型是int类型
order 是在执行前还是执行后
<if test="count > 0"></if> <if test="count==0"></if>
当符合条件时执行条件 当不符合条件时也要处理 要不然会报错,我被这个坑 郁闷了一天。
第二个知识点:
查询三个无关联的表 结果合在一起 使用union all 当有查询条件的时候 要把查询条件放在条件里面 这样效率会高
第三个知识点 mapper 中动态sql
<where> <choose> <when><otherwise> 是在choose 内使用