我们上一篇文章讲了Dao层代码:
这一篇我们讲解Service层和Action层;
Service层:
分为接口和实现类,我们主要看实现类:GysemplServiceImpl
package yycg.business.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import yycg.business.dao.mapper.GysypmlMapperCustom; import yycg.business.pojo.vo.GysypmlCustom; import yycg.business.pojo.vo.GysypmlQueryVo; import yycg.business.service.GysymplService; public class GysemplServiceImpl implements GysymplService{ @Autowired GysypmlMapperCustom gysymplMapperCustom; @Override public List<GysypmlCustom> findGysymplList(String usergysId,GysypmlQueryVo gysymplQueryVo) throws Exception { //为了防止bug.这里做一个非空校验,如果传进来不是空,那么就直接把传进来那个赋值给他,如果传进来就是空的 //那么就新建一个 gysymplQueryVo=gysymplQueryVo!=null?gysymplQueryVo:new GysypmlQueryVo(); /** * 为什么这里要再得到一个?因为可能在页面上已经传进来一个gysymplCustom. * 所以要判断传进来那个是不是空的。 * * */ GysypmlCustom gysymplCustom=gysymplQueryVo.getGysymplCustom(); if(gysymplCustom==null)//如果是空的,那就new一个。反正我们的目的就是把usergysId的值设置进去。 { gysymplCustom=new GysypmlCustom(); } //设置数据范围权限 gysymplCustom.setId(usergysId); List<GysypmlCustom> listgyGysymplCustoms=gysymplMapperCustom.findGysymplList(gysymplQueryVo); return listgyGysymplCustoms; } @Override public int findGysypmlCount(String usergysId,GysypmlQueryVo gysymplQueryVo) throws Exception { //为了防止bug.这里做一个非空校验,如果传进来不是空,那么就直接把传进来那个赋值给他,如果传进来就是空的 //那么就新建一个 gysymplQueryVo=gysymplQueryVo!=null?gysymplQueryVo:new GysypmlQueryVo(); /** * 为什么这里要再得到一个?因为可能在页面上已经传进来一个gysymplCustom. * 所以要判断传进来那个是不是空的。 * * */ GysypmlCustom gysymplCustom=gysymplQueryVo.getGysymplCustom(); if(gysymplCustom==null)//如果是空的,那就new一个。反正我们的目的就是把usergysId的值设置进去。 { gysymplCustom=new GysypmlCustom(); } //设置数据范围权限 gysymplCustom.setId(usergysId); int count=gysymplMapperCustom.findGysypmlCount(gysymplQueryVo); return count; } }
再看Action层:
package yycg.business.action; import java.util.List; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import yycg.base.pojo.vo.ActiveUser; import yycg.base.pojo.vo.PageQuery; import yycg.base.process.context.Config; import yycg.base.process.result.DataGridResultInfo; import yycg.business.pojo.vo.GysypmlCustom; import yycg.business.pojo.vo.GysypmlQueryVo; import yycg.business.service.GysymplService; @Controller @RequestMapping("/ypml") public class GysymplAction { @Autowired GysymplService gysymplService; //去往查询页面 @RequestMapping("/querygysypml") public String querygysypml( Model model) throws Exception { return "/business/ypml/querygysypml"; } //查询结果集 @RequestMapping("/querygysympl_request") public @ResponseBody DataGridResultInfo querygysympl_request(HttpSession session,GysypmlQueryVo gysypmlQueryVo,int page,int rows)
throws Exception { //当前用户信息去 Session中去拿。 ActiveUser activeUser=(ActiveUser)session.getAttribute(Config.ACTIVEUSER_KEY); /** * 刚开始的时候想不通,为什么传的是用户所属的单位id,潜意识里想不是应该传的是用户的id吗, * 后来想想不是啊,怎么可能是用户的id,因为是供应商这么一个大的慨念在提供货物,是以供应商为单位的, * 所以应该是供应商啊,有很多个供应商在供应药品,所以是供应商的id. * * */ //用户所属的单位 String usergysid=activeUser.getSysid();//单位id //列的总数 int total=gysymplService.findGysypmlCount(usergysid, gysypmlQueryVo); //列表 PageQuery pageQuery=new PageQuery(); pageQuery.setPageParams(total, rows, page); //设置分页参数 gysypmlQueryVo.setPageQuery(pageQuery); //分页查询列表 List<GysypmlCustom> list=gysymplService.findGysymplList(usergysid, gysypmlQueryVo); DataGridResultInfo dataGridResultInfo=new DataGridResultInfo(); dataGridResultInfo.setTotal(total); dataGridResultInfo.setRows(list); return dataGridResultInfo; } }
最后调试:
调试的时候我遇到两个问题:
主要归结于两点:
1:GysypmlMapperCustom.xml所在的包路径和名字要与Mapper接口的下的名字一样:
Mapper接口:
要一模一样。不然直接报错:
调试结果:
调试ok。