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"));
}