1.1.1 第一步:添加依赖
1.1.2 第二步:在applicationContext.xml中配置拦截器插件
oracle
true
oracle
true
- Oracle中创建订单表的SQL语句:-- 订单表
CREATE TABLE orders(
id int PRIMARY KEY,
orderNum VARCHAR2(20) NOT NULL UNIQUE,
orderTime date,
peopleCount INT,
orderDesc VARCHAR2(500),
payType INT,
orderStatus INT,
productId int,
FOREIGN KEY (productId) REFERENCES product(id)
);
- 实体类Order
使用PageHelper分页,dao只需要查询全部,不需要手动写分页SQL。
dao查询方法已经有了:
- -- product与Orders一对一关系查询
select o.id oid,o.ordernum,o.ordertime,o.peoplecount,o.orderdesc,
o.paytype,o.orderstatus,o.productid,p.* from orders o inner join product p on o.productid=p.id;
/**
* 使用PageHelper分页,dao只需要查询全部,不需要手动写SQL。
*/
public interface IOrderDao {
/**
* 查询全部
*/
@Select("select o.id oid,o.ordernum,o.ordertime,o.peoplecount,o.orderdesc,o.paytype,o.orderstatus\n" +
",p.* from orders o inner join product p on o.productid=p.id")
@Results({
// 订单信息,只要指定id列与属性的映射关系,其他列会自动封装(属性与列一致)
@Result(property = "id", column = "oid"),
// 产品信息
@Result(property = "product.id", column = "id"),
@Result(property = "product.productNum", column = "productNum"),
@Result(property = "product.productName", column = "productName"),
@Result(property = "product.cityName", column = "cityName"),
@Result(property = "product.departureTime", column = "departureTime"),
@Result(property = "product.productPrice", column = "productPrice"),
@Result(property = "product.productDesc", column = "productDesc"),
@Result(property = "product.productStatus", column = "productStatus"),
})
List findAll();
}
2.2.1 service接口
public interface IOrderService {
/**
* 查询全部
*/
List findAll();
/**
* 分页查询
* @param pageNum 当然页
* @param pageSize 页大小
* @return 返回PageHelper提供的封装分页参数的PageInfo对象
*/
PageInfo findByPage(int pageNum, int pageSize);
}
2.2.2 service实现
@Service
@Transactional
public class OrderServiceImpl implements IOrderService {
// 注入dao
@Autowired
private IOrderDao orderDao;
@Override
public List findAll() {
return orderDao.findAll();
}
@Override
public PageInfo findByPage(int pageNum, int pageSize) {
// 分页查询(紧跟在其后的第一条查询sql将会被分页)
PageHelper.startPage(pageNum,pageSize);
// 查询全部
List list = orderDao.findAll();
// 返回结果
PageInfo pageInfo = new PageInfo<>(list);
return pageInfo;
}
}
@Controller
@RequestMapping("/order")
public class OrderController {
// 注入service
@Autowired
private IOrderService orderService;
/**
* 1.查询全部
*/
@RequestMapping("/findAll")
public ModelAndView findAll() {
//1.1 调用service
List list = orderService.findAll();
//1.2 返回结果
ModelAndView mv = new ModelAndView();
mv.setViewName("order-list");
mv.addObject("list", list);
return mv;
}
@RequestMapping("/findByPage")
public ModelAndView findByPage(
@RequestParam(defaultValue = "1") int pageNum,
@RequestParam(defaultValue = "2") int pageSize) {
//1.1 调用service
PageInfo pageInfo = orderService.findByPage(pageNum, pageSize);
//1.2 返回结果
ModelAndView mv = new ModelAndView();
mv.setViewName("order-list");
mv.addObject("pageInfo", pageInfo);
return mv;
}
}
--- (1)批量插入Order表数据脚本
declare
i integer;
begin
i := 1;
loop
INSERT INTO orders VALUES(i,'O9'||i,
to_date('2018-09-09 20:10','yyyy-MM-dd HH24:mi'),3,'无',1,1,1);
/* 参数递增 */
i := i + 1;
/* 停止条件 */
exit when i > 50;
end loop;
commit;
end;-- 查看
select * from orders;
2.4.1 分页达到的效果
页面效果:只显示当前页前后5页的页码。最多显示的页码共11个。
- 因为每一个模块的列表都要求有分页,所以把分页的公共代码抽取出去放到page.jsp
- 其它模块如果要分页,直接引入page.jsp页面即可。
分页条公用页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
如果页面要分页,只需要引入下面代码即可: