@Override @Transactional(propagation = Propagation.NOT_SUPPORTED) public Page findByPage(Page page, Map paramsMap) { StringBuffer sb = new StringBuffer(); sb.append("from Course u where 1=1"); if (paramsMap.get("sname") != null&& !"".equals(paramsMap.get("sname"))) { sb.append(" and u.title like '%" + paramsMap.get("sname")+ "%'"); } if (paramsMap.get("sort") != null && !"".equals(paramsMap.get("sort"))) { sb.append(" " + paramsMap.get("sort")); } System.out.println(sb.toString()); List teaList = (sessionFactory.getCurrentSession().createQuery(sb .toString())).list(); int totl = teaList.size(); Query query = sessionFactory.getCurrentSession().createQuery( sb.toString()); query.setFirstResult((page.getPageNo() - 1) * page.getPageSize()); query.setMaxResults(page.getPageSize()); List employeeList = query.list(); page.setList(employeeList); page.setTotal(totl); return page; }
时间: 2024-03-04 08:53:18 浏览: 9
这是 CourseServiceImp 类中的一个方法,名为 findByPage。该方法使用了 @Override 和 @Transactional 注解,表示该方法是覆盖了父类的方法,并且需要进行事务处理。该方法接受两个参数,一个是 Page 对象,一个是 Map 对象。该方法的作用是根据参数中的条件进行分页查询课程信息。方法中首先定义了一个 StringBuffer 对象 sb,用于拼接 SQL 语句。然后根据传入的参数,拼接查询条件。如果 paramsMap 中的 sname 不为空,则在 SQL 语句中加入课程标题的模糊查询条件。如果 paramsMap 中的 sort 不为空,则在 SQL 语句中加入排序条件。然后输出拼接好的 SQL 语句。接着,使用 getCurrentSession 方法获取当前 Session 对象,执行 SQL 语句,得到查询结果列表。然后通过 totl 变量获取查询结果的总数。接着,定义一个 Query 对象,执行 SQL 语句,设置分页查询的起始位置和每页显示的记录数。然后执行查询,得到分页查询的结果,将结果设置到 Page 对象中,并设置总记录数。最后返回 Page 对象。
相关问题
@Override @Transactional(isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class)
在Spring项目中,使用`@Transactional`注解可以为方法添加事务支持。其中,`isolation`参数用于指定事务的隔离级别,`rollbackFor`参数用于指定需要回滚的异常类型。
对于`@Transactional(isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class)`这个注解,它的作用是将方法设置为使用读已提交的隔离级别,并且在遇到任何异常时都进行回滚。
隔离级别`READ_COMMITTED`表示一个事务只能读取到已经提交的数据,避免了脏读。而`rollbackFor = Exception.class`表示遇到任何异常都会触发事务回滚。
需要注意的是,Spring的事务隔离级别和数据库的事务隔离级别是有关联的。当Spring项目中使用了`@Transactional`注解指定了隔离级别时,会优先使用Spring的隔离级别,而不是数据库的隔离级别。因此,如果两者不一样,以Spring的隔离级别为准。
@Override @Transactional(rollbackFor = Exception.class)
@Override是Java中的一个注解,用于标识方法覆盖父类的方法。当一个方法被标记为@Override时,编译器会检查该方法是否确实覆盖了父类中的方法,如果没有覆盖成功,编译器会报错。
@Transactional(rollbackFor = Exception.class)是Spring框架中的一个注解,用于标识方法需要在事务管理下执行。当一个方法被标记为@Transactional时,Spring会在方法执行前开启一个事务,在方法执行后根据执行结果决定是提交事务还是回滚事务。