java 用list合并两个sql查询出来的值并实现分页

maven先导入:

<!--分页插件-->
<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper</artifactId>
  <version>5.1.2</version>
</dependency>

mapper.xml:

<select id="find" resultType="com.fruitsalesplatform.entity.CommoditiesRetailerOver" parameterType="String">
SELECT
   /*@rowNo := @rowNo + 1 AS rowNo,*/
   c.fruitid,
   c.`name` as fruitname,
   c.price,
   c.locality,
   o.contractid
FROM
   /*( SELECT @rowNo := 0 ) a,*/
   commodities c,
   middle_tab m,
   contract o
WHERE
c.fruitid = m.fruitid and
o.contractid = m.contractid
<if test='_parameter != null and _parameter != ""'>and name like "%"#{name}"%"</if>
    </select>

   <select id="finduser" resultType="com.fruitsalesplatform.entity.CommoditiesRetailerOver" parameterType="String">
        select r.name,c.contractid,c.barcode from contract c ,retailer r where c.retailerid = r.retailerid order by barcode
    </select>

BaseDao:

public interface BaseDao<T> {
    public T get(Serializable id);
    public List<T> find(Map map);
    public void insert(T entity);
    public void update(T entity);
    public void deleteById(Serializable id);
    public void delete(Serializable[] sid);
}

BaseDaoImpl:

public abstract class BaseDaoImpl<T> extends SqlSessionDaoSupport implements BaseDao<T> {
    @Autowired
    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory){
        super.setSqlSessionFactory(sqlSessionFactory);
    }
    private String ns;

    public String getNs() {
        return ns;
    }

    public void setNs(String ns) {
        this.ns = ns;
    }
    public List<T> find(Map map){
        List<T> oList = this.getSqlSession().selectList(ns + ".find", map);
        return oList;
    }
    public T get(Serializable id){
        return this.getSqlSession().selectOne(ns + ".get", id);
    }

    public void insert(T entity) {
        this.getSqlSession().insert(ns + ".insert" ,entity);
    }

    public void update(T entity) {
        this.getSqlSession().update(ns +".update",entity);
    }

    public void deleteById(Serializable id) {
        this.getSqlSession().delete(ns + ".deleteById" ,id);
    }

    public void delete(Serializable[] ids) {
        this.getSqlSession().delete(ns + ".delete",ids);
    }
}

Dao:

public interface SelectDao extends BaseDao<CommoditiesRetailerOver> {
public List<CommoditiesRetailerOver> find(int page,int age,@Param(value = "name") String name);
 public List<CommoditiesRetailerOver> finduser();

Daoimpl:

@Repository
public class SelectDaoImpl extends BaseDaoImpl<CommoditiesRetailerOver> implements SelectDao {
    public SelectDaoImpl(){
        super.setNs("com.fruitsalesplatform.mapper.selectMapper");
    }


/*    @Override
    public List<CommoditiesRetailerOver> finds(String name) {
        return this.getSqlSession().selectList(this.getNs()+".find",name);
    }*/


    @Override
    public List<CommoditiesRetailerOver> find(int page, int age,String name) {
        return this.getSqlSession().selectList(this.getNs()+".find",name);
    }

    public List<CommoditiesRetailerOver> finduser() {
        return this.getSqlSession().selectList(this.getNs()+".finduser");
    }
}

service:

public interface SelectService {
    /*public List<CommoditiesRetailerOver> find(String name);*/
    public List<CommoditiesRetailerOver> find(int page,int age,String name);
    public List<CommoditiesRetailerOver> finduser();
}

serviceImpl:

@Service
public class SelectServiceImpl implements SelectService {
    @Autowired
    SelectDao selectDao;
   /* public List<CommoditiesRetailerOver> find(String name) {
        return selectDao.finds(name);
    }*/
   public List<CommoditiesRetailerOver> find(int page,int age,String name) {
       PageHelper.startPage(page,age);
       return selectDao.find(page,age,name);
   }

    public List<CommoditiesRetailerOver> finduser() {
        return selectDao.finduser();
    }

}

controller:

@Controller
public class SelectController extends BaseController {
    @Autowired
    SelectService selectService;
    @RequestMapping("/select/selects.action")
    public ModelAndView index(@RequestParam(name = "page",required = true,defaultValue = "0")
                                      int page,
                              @RequestParam(name = "size",required = true,defaultValue = "10")
                                      int size,String name){
        ModelAndView modelAndView = new ModelAndView();
        List<CommoditiesRetailerOver> commoditiesList=selectService.find(page,size,name);
        List<CommoditiesRetailerOver> retailerList = selectService.finduser();
        List<CommoditiesRetailerOver> list = commoditiesList.stream().map(m -> {
            retailerList.stream().filter(m2-> Objects.equals(m.getContractId(),m2.getContractId())).forEach(m2-> {
                m.setBarCode(m2.getBarCode());
                m.setFruitname(m.getFruitname());
                m.setLocality(m.getLocality());
                m.setName(m2.getName());
            });
            return m;
        }).collect(Collectors.toList());
        list = list.stream().sorted(Comparator.comparing(CommoditiesRetailerOver::getBarCode))
                .collect(Collectors.toList());

        PageInfo pageInfo= new PageInfo(list);
        System.out.println("pageInfo"+pageInfo);
        modelAndView.addObject("pageInfo",pageInfo);
        modelAndView.setViewName("/select/Page");
        return modelAndView;
    }

jsp页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false"%>
<html>
<head>
    <title>asdf</title>
    <link href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <style type="text/css">
        *{margin:0; padding:0;} #menuContent a{text-decoration:none;color:#ffffff}
    </style>
    <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery.page.js"></script>
    <script type="text/javascript">
    </script>
</head>
<body>
<%@ include file="../menu.jsp" %><br/>
<div class="container"><%--栅格系统--%>
    <div class="row clearfix">
        <div class="col-md-12 column"><%--将屏幕分为12份--%>
            <div class="page-header">
                <h1>
                    <small>显示所有水果关联用户</small>
                </h1>
            </div>
        </div>
    </div>
    <div class="row" id="hiddle">
        <div class="col-md-8 column">
            <form action="/select/selects.action" class="form-inline" style="float: right" method="post" >
                <input id="select" type="text" name="name" placeholder="请输入要查询的水果名称" class="form-control">
                <input type="submit" value="查询" class="btn btn-primary" οnclick="validatee()">
            </form>
        </div>
    </div>
    <div class="row clearfix" id="hiddles">
        <div class="col-md-12 column">
            <table id="px" class="table table-hover table-striped">
                <thead>
                <tr>
                    <th>合同号</th>
                    <th>水果</th>
                    <th>产地</th>
                    <th>零售商</th>
                </tr>
                </thead>
                <tbody>
                <c:forEach var="item" items="${pageInfo.list}" varStatus="status">
                    <tr id="test">
                        <td id="abcs" style="line-height: 40px">${item.barCode}</td>
                        <td id="abcd" style="line-height: 40px">${item.fruitname}</td>
                        <td style="line-height: 40px">${item.locality}</td>
                        <td style="line-height: 40px">${item.name}</td>
                    </tr>
                </c:forEach>
                </tbody>
            </table>
                <%--<li><a href="${pageContext.request.contextPath}/select/selects.action?page=1&size=10" aria-label="Previous">首页</a></li>--%>
                <a id="spage" href="${pageContext.request.contextPath}/select/selects.action?page=${pageInfo.pageNum-1}&size=10">上一页</a>
                <C:forEach begin="1" end="${pageInfo.pages}" var="pagenum">
                    <a href="${pageContext.request.contextPath}/select/selects.action?page=${pagenum}&size=10">${pagenum}</a>
                </C:forEach>
                <a id="nextpage" href="${pageContext.request.contextPath}/select/selects.action?page=${pageInfo.pageNum+1}&size=10">下一页</a>
                <%--<li><a href="${pageContext.request.contextPath}/select/selects.action?page=${pageInfo.pages}&size=10" aria-label="Next">尾页</a></li>--%>

        </div>
    </div>
</div>
</body>
</html>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值