mybatis在Oracled插入数据返回主键ID

数据库的操作

创建序列

新增一个表对应的 序列

注:序列名最好是跟表对应的,例如 USER_SEQ 最小值:1 步进:1 从 0 开始 没有循环

CREATE SEQUENCE 序列名 MINVALUE 1 INCREMENT BY 1 START WITH 0 NOCACHE

忽略控制层的操作,直接进入服务层开始

mapper层 编写对应的接口 注意 传入的pageDate 是封装的Map 后面返回主键需要用到

public interface UserManager{
    
    
    /**新增
     * @param pd
     */
    void save(PageData pd)throws Exception;
}

lmpl层 实现User接口 调用mybatis

public class UserService implements UserManager{
    
    
    /**新增
     * @param pd
     */
    @Override
    public void save(PageData pd)throws Exception{
    
    
       pd.put("GMT_CREATE", DateUtil.now());  //创建时间
       pd.put("GMT_MODIFIED", DateUtil.now());    //更新时间
       dao.save("UserMapper.save", pd);
    }
}

mybatis中的写法,重点:在插入数据之前 查询新增的序列,他会自动赋值到传入的数据模型:PageData 中

DateUtil.now() 引入的是 HuTool 的工具包

public class UserService implements UserManager{
    
    
    /**新增
     * @param pd
     */
    @Override
    public void save(PageData pd)throws Exception{
    
    
       pd.put("GMT_CREATE", DateUtil.now());  //创建时间
       pd.put("GMT_MODIFIED", DateUtil.now());    //更新时间
       dao.save("UserMapper.save", pd);
    }
}

然后在最开始调用新增数据的 用户数据模型.KEY的方式获取即可

// 伪代码
public void saveUser(PageData pd) throws Exception {
    
    
    pd.put("USER_NAME", pd.get("USER_NAME"));  //用户名
    userService.save(pd);
    System.out.println("返回的数据:" + pd);
    System.out.println("返回的主键ID:" + pd.get("USER_ID"));
}

到此整个流程结束

猜你喜欢

转载自blog.csdn.net/xiaojie201314/article/details/105745737