五 JPA - 原生SQL实现增删改查( 二 )

执行结果:

异常提示信息为:说我们的 update / delete 操作需要事务的支持
  • 把上叙代码注释掉的事务,放开执行即可 。

五 JPA - 原生SQL实现增删改查

文章插图
6、6 删除指定id示例代码:
// 删除指定id@Testpublic void deleteById() {EntityManager entityManager = JPAEntityFactory.getEntityManager(); // 等同于 获取连接entityManager.getTransaction().begin(); // 开启事务String deleteSql = "delete from yootk.course where cid = ?1";Query query = entityManager.createNativeQuery(deleteSql);query.setParameter(1, 1); // 预处理sql 赋值loggerFactory.info("【执行结果】:{}", query.executeUpdate());// 执行sqlentityManager.getTransaction().commit(); // 提交事务JPAEntityFactory.close();// 关闭连接}执行结果
执行的sql: delete from yootk.course where cid = ?
6、7 新增实例代码:
@Testpublic void addCourse() {EntityManager entityManager = JPAEntityFactory.getEntityManager();// 等同于获取连接entityManager.getTransaction().begin(); //开启事务String addSql = "insert into yootk.course(cname, credit, end, num, start) " +"value(:cname,:credit,:end,:num,:start )";Query query = entityManager.createNativeQuery(addSql);query.setParameter("cname", "java就业课程实战"); // 对预处理参数赋值query.setParameter("credit", 10); // 对预处理参数赋值query.setParameter("start", DateUtil.stringToDate("2021-10-01")); // 对预处理参数赋值query.setParameter("end", DateUtil.stringToDate("2022-10-01")); // 对预处理参数赋值query.setParameter("num", 999); // 对预处理参数赋值query.executeUpdate(); // 执行最终sqlentityManager.getTransaction().commit();// 提交事务}执行结果:
五 JPA - 原生SQL实现增删改查

文章插图
【五 JPA - 原生SQL实现增删改查】

经验总结扩展阅读