Jpa增删改查

Jpa状态图

删除

通过id来删除

//通过ID,删除数据
@Test
public void removeByID(){
    //第一步:获得操作对象
    EntityManager entityManager = JpaUtils.getEntityManager();
    //第二步:启动事务
    EntityTransaction transaction = entityManager.getTransaction();
    transaction.begin();
    //第三步:操作-删除数据
    User user = entityManager.find(User.class, 1);
    //删除的用户,必须包含ID
    entityManager.remove(user);

    //第四步:提交关闭
    transaction.commit();
    entityManager.close();
}


通过属性来删除

//通过属性,删除数据
//如果通过属性删除,我们需要使用JPQL(Java Persistence Query Language)
@Test
public void removeByProperty(){
    //第一步:获得操作对象
    EntityManager entityManager = JpaUtils.getEntityManager();
    //第二步:启动事务
    EntityTransaction transaction = entityManager.getTransaction();
    transaction.begin();
    //第三步:操作-删除数据
    Query query = entityManager.createQuery("delete from User u where u.userName = :username");
    query.setParameter("username", "张三");
    //执行JPQL
    int i = query.executeUpdate();
    System.out.println(i);
    //第四步:提交关闭
    transaction.commit();
    entityManager.close();
}

更新

通过编号来更新

//通过编号更新数据
@Test
public void updateById(){
    //第一步:获得操作对象
    EntityManager entityManager = JpaUtils.getEntityManager();
    //第二步:启动事务
    EntityTransaction transaction = entityManager.getTransaction();
    transaction.begin();
    //第三步:操作-更新数据
    User user = entityManager.find(User.class, 1);
    //修改数据,对象必须是从数据库查询后的对象
    user.setUserAccount("zhangsan");

    //第四步:提交关闭
    transaction.commit();
    entityManager.close();
}

通过属性来更新

//通过属性更新数据
@Test
public void updateByProperty(){
    //第一步:获得操作对象
    EntityManager entityManager = JpaUtils.getEntityManager();
    //第二步:启动事务
    EntityTransaction transaction = entityManager.getTransaction();
    transaction.begin();
    //第三步:操作-更新数据
    Query query = entityManager.createQuery("update User u set u.userAccount=?1 where u.userName=?2");
    query.setParameter(1, "lisi");
    query.setParameter(2, "李四");
    query.executeUpdate();

    //第四步:提交关闭
    transaction.commit();
    entityManager.close();
}

查询

通过id来查询数据

//通过ID,查询数据
@Test
public void findById(){
    //第一步:获得操作对象
    EntityManager entityManager = JpaUtils.getEntityManager();

    //第二步:操作-查询
    User user = entityManager.find(User.class, 1);
    System.out.println("-用户名-:"+user.getUserName());

    //第三步:提交关闭
    entityManager.close();
}

查询所有数据

//查询所有数据
@Test
public void findAll(){
    //第一步:获得操作对象
    EntityManager entityManager = JpaUtils.getEntityManager();

    //第二步:操作-查询
    TypedQuery<User> query = entityManager.createQuery("select u from User  u", User.class);
    List<User> users = query.getResultList();
    for (User user : users) {
        System.out.println("-用户名-:"+user.getUserName());
    }


    //第三步:提交关闭
    entityManager.close();
}

查询count

//查询所有数据的个数
@Test
public void count(){
    //第一步:获得操作对象
    EntityManager entityManager = JpaUtils.getEntityManager();

    //第二步:操作-查询
    TypedQuery<Long> query = entityManager.createQuery("select count (u) from User  u", Long.class);
    Long count = query.getSingleResult();

    System.out.println(count);

    //第三步:提交关闭
    entityManager.close();
}

分页查询

//分页查询
@Test
public void findByPage(){
    //第一步:获得操作对象
    EntityManager entityManager = JpaUtils.getEntityManager();

    //第二步:操作-查询
    TypedQuery<User> query = entityManager.createQuery("select u from User  u", User.class);
    //开始位置
    query.setFirstResult(2);
    //每页记录数
    query.setMaxResults(5);
    List<User> users = query.getResultList();
    for (User user : users) {
        System.out.println("-用户名-:"+user.getUserName());
    }


    //第三步:提交关闭
    entityManager.close();
}

增加

persist

 @Test
    public void save(){
        //第一步:获得操作对象
        EntityManager entityManager = JpaUtils.getEntityManager();
        //第二步:启动事务
        EntityTransaction transaction = entityManager.getTransaction();
        transaction.begin();
        //第三步:操作-插入数据
        User user=new User();
        user.setUserName("张三");
        user.setUserPassword("123456");
        entityManager.persist(user);
        //第四步:提交关闭
        transaction.commit();
        entityManager.close();

    }
}

merge 添加/修改

   @Test
    public void merge(){
        //1.创建实体管理对象
        EntityManager entityManager = JpaUtils.createEntityManager();
        //2.开启事务
        EntityTransaction transaction = entityManager.getTransaction();
        transaction.begin();
        //3.操作(添加)
        User user=new User();
        user.setUId(23);
        user.setUEmail("啥情况");
        user.setUPassword("345");
        user.setUName("ad");
        entityManager.merge(user);
        //4.提交事务
        transaction.commit();
        //5.关闭实体管理对象
        entityManager.close();
    }

注意:merge方法。当编号在数据库中没有,则merge为添加数据,当id不为你设置的id值,为default值。当id在数据库中
有,则merge方法为修改

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值