Jpa状态图
![](https://i-blog.csdnimg.cn/blog_migrate/e0c2bd5a622a7fa07fb1666eb9f115d0.png)
删除
通过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方法为修改