Model代码:
public class Task { private Long taskId; private String message; //setter and getter }
Oracle:
这里就用Mybatis的generator工具生成的XML模板做例子
说明:
1、sel_task_id 是自己在Oracle中建立的seq
2、resultType是主键的类型,order是表示在insert语句之前运行还是之后,keyProperty代表的是Task的主键。
3、特别注意,用了selectKey之后,需要删除generator工具生成的主键if条件判断,不然会报ORA-01400: 无法将 NULL 插入 TASK_ID 的错误
4、这条insert语句返回的依然是插入的条数1,task的主键会自动加载到model的Task中,成功后就可以直接操作Task获取主键了.
<insert id="insertSelective" parameterType="cn.model.Task"> <selectKey resultType="Long" order="BEFORE" keyProperty="taskId" > select seq_task_id.nextval as taskId from dual </selectKey> insert into TASK <trim prefix="(" suffix=")" suffixOverrides="," > TASK_ID, <if test="message != null" > MESSAGE, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides="," > #{taskId,jdbcType=DECIMAL}, <if test="message!= null" > #{message,jdbcType=VARCHAR}, </if> </trim> </insert>
MYSQL:
这个没什么可说明的,比较简单。
<insert id="insert" useGeneratedKeys="true" keyProperty="taskId" parameterType="cn.model.Task"> insert into TASK(TASK_ID,MESSAGE) values(#{taskId},#{message}) </insert>