一. MySQL避免重复插入
想要插入一条数据,要避免重复插入,想根据某些条件进行筛选,如果有满足条件的数据,则不插入,可以参考如下办法:
INSERT INTO table(column1,column2,column3 ...columnN)
SELECT value1,value2,value3 ...valueN
FROM dual
WHERE NOT EXISTS(
SELECT *
FROM table
WHERE value = ?
);
以上代码中有一个from dual,有的同学可能不知道这个是什么,下面我来告诉大家:
Dual简单的说就是一个空表,Oracle提供的最小的工作表,只有一行一列,具有某些特殊功用.常用在没有目标表的Select中。Dual表由Oracle连同数据字典一同创建,所有的用户都可以用名称DUAL访问该表。
二. MyBatis choose(when, otherwise)标签
choose (when,otherwize) ,相当于java 语言中的 switch ,与 jstl 中 的 choose 很类似。
"<choose>",
"<when test=\"column != null\">andcolumn = #{columnjdbcType=BIGINT}</when>",
"<otherwise>and column is null</otherwise>",
"</choose>",
choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。
网友评论