我们上一篇文章讲了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。

032医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------Service层和Action层和调试的更多相关文章

  1. 033医疗项目-模块三:药品供应商目录模块——供货商药品目录t添加查询功能----------Dao层和Service层和Action层和调试

    什么叫做供货商药品目录t添加查询功能?就是说我们前面的博客里面不是说供货商登录后看到了自己供应的药品了么如下: 现在供货商想要往里面添加别的药品,那么这个药品的来源就是卫生局提供的那个Ypxx表(药品 ...

  2. 035医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------Service

    这篇文章我们重点介绍Service层.因为Dao层就是用Gysypml逆向生成的Mapper就可以了.所以这里重点讲解Service层. 业务逻辑如下: 1:我们从前端页面传入有两个值:1:userg ...

  3. 030医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------Dao层:基本的查询语句的编写

    我们安装显示的要求: 我们能看到显示的目录里面有:供货企业的名字(这个数据来自于供货商的表[usergys]),流水号,通用名,剂型(这些都来自药品信息表),供货的状态(这个呢在gysypml_con ...

  4. 036医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------Action层

    这篇文章我们来讲Action层: 我们先讲开发步骤: 1:我们要根据Service层里面要传的参数,在Action层传入对应的参数. Service层是:public void insertGysym ...

  5. 027医疗项目-模块二:药品目录的导入导出-导入功能的Action的编写

    前一篇文章我们写了Service层,这篇文章我们写一下Action层. 实现的功能: 1:我们先下载模板:然后按照模板里面的规则,插入数据.比如存在d盘. 2:然后浏览找到那个文件,上传上去. 然后把 ...

  6. 023医疗项目-模块二:药品目录的导入导出-从数据库中查出数据用XSSF导出excel并存放在虚拟目录最后下载(包括调试)

    我们要实现的效果:     进入到这个页面后,输入要查询的条件,查询出药品表的数据,然后按下导出按钮 ,就会在服务器的一个目录下生成一个药品表的excel表格.  点击"导出"之后 ...

  7. 044医疗项目-模块四:采购单模块—采购单保存(Dao,Service,Action三层)

    我们上上一篇文章(042医疗项目-模块四:采购单模块-采购单明细添加查询,并且把数据添加到数据库中)做的工作是把数据插入到了数据库,我们这篇文章做的是042医疗项目-模块四:采购单模块-采购单明细添加 ...

  8. 005医疗项目-模块一:用户的查找:1.用户表查询的sql语句

    这是医疗项目的第一个模块:做一个用户的查询,可以根据用户的账号,用户的名称,单位的名称,用户的类型去查询.要求效果如下:

  9. SSH项目搭建(三)——Maven多模块搭建项目

    多模块开发,大致的思想就是把一个项目按某种方式分成多个模块,再把模块们连接成一个整体,我们在开发的时候,可以很清晰的操作每一个模块,可以大大提高开发的效率. Java web项目,最常见的就是按代码的 ...

随机推荐

  1. 【代码笔记】iOS-标题2个图标,点击的时候,页面跳转

    一,效果图. 二,工程图. 三,代码 RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  2. 转载:jsp中jstl标签的类似 if - else 语句 的语法

    原文链接:http://www.cnblogs.com/wanggd/archive/2013/05/27/3101788.html 在jsp中引入jstl的标签库和函数库 <%@ taglib ...

  3. 豆瓣FM 歌词跟随插件

    一直在用豆瓣FM,发现老是没有歌词很不方便,今天找了下.找到一个不错的插件. 插件原文地址:http://www.douban.com/group/topic/47559280/ 插件下载地址:htt ...

  4. 【JSP】JSP基础学习记录(三)—— JSP的9个内置对象

    本节说一下JSP中的9个内置对象.这9个内置对象都是Servlet API接口的实例,只是JSP规范对他们进行了默认初始化(由JSP页面对应Servlet的_jspService()方法来创建这些实例 ...

  5. SQL Server 2000: 维护计划无法执行

    开启“sql server agent”服务,控制面板-->管理工具-->服务

  6. ASP.NET Web API 简介

    ASP.NET MVC 4 包含了 ASP.NET Web API, 这是一个创建可以连接包括浏览器.移动设备等多种客户端的 Http 服务的新框架, ASP.NET Web API 也是构建 RES ...

  7. MySQL-procedure(loop,repeat)

    在 MySQL-procedure(cursor,loop) 中将spam_keyword表中的文字全部分割到t表当中,且每一行的字都不重复,那t表可以用来当作一个小字典,只有1000来个字符,这次把 ...

  8. hadoop2.6---windows下开发环境搭建

    一.准备插件 1.自己编译 1.1 安装Ant 官网下载Ant,apache-ant-1.9.6-bin.zip 配置环境变量,新建ANT_HOME,值是E:\apache-ant-1.9.6:PAT ...

  9. C++ 中 typename

    声明template参数时, 前缀关键字class和typename可以互换; 使用关键字typename标识嵌套从属类型名称, 但不需在基类列表和成员初始化列表内使用. 从属名称(dependent ...

  10. CSS3魔法堂:CSS3滤镜及Canvas、SVG和IE滤镜替代方案详解[转]

    一.前言    IE特有的滤镜常常作为CSS3各种新特性的降级处理补充,而Adobe转向HTML5后与Chrome合作推出CSS3的Filter特性,因此当前仅Webkit内核的浏览器支持CSS3 F ...