美文网首页
Service层和Controller层的开发

Service层和Controller层的开发

作者: Haward_ | 来源:发表于2019-05-04 23:07 被阅读0次

背景

dao层:对应每个表做增删改查

service层:对dao的增删改查整合(一般service只调用自己的dao接口,如果想调用其他层的dao接口,则通过引入该层的service)

web层(controller层):定义路由访问,对service层整合

Service层

//配置+接口+实现类

AddressbookService.java

package com.haward.addressbook.service;

import com.haward.addressbook.entity.Addressbook;

import java.util.List;

//配置@Service+接口+实现类
public interface AddressbookService {

    List<Addressbook> getAddressbookList();

    Addressbook getAddressbookById(int id);

    boolean addAddressbook(Addressbook addressbook);

    boolean modifyAddressbook(Addressbook addressbook);

    boolean deleteAddressbook(int id);
}

AddressbookServiceImpl.java

package com.haward.addressbook.service.impl;

import com.haward.addressbook.dao.AddressbookDao;
import com.haward.addressbook.entity.Addressbook;
import com.haward.addressbook.service.AddressbookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;

@Service
public class AddressbookServiceImpl implements AddressbookService {

    @Autowired
    private AddressbookDao addressbookDao;

    @Override
    public List<Addressbook> getAddressbookList() {
        return addressbookDao.queryAddressbook();
    }

    @Override
    public Addressbook getAddressbookById(int id) {
        return addressbookDao.queryAddressbookById(id);
    }

    @Transactional
    @Override
    public boolean addAddressbook(Addressbook addressbook) {
        if(addressbook.getAddressbookName()!=null && !"".equals(addressbook.getAddressbookName())){
            addressbook.setCreateTime(new Date());
            try{
                int effectedNum = addressbookDao.insertAddressbook(addressbook);
                if(effectedNum>0)
                    return true;
                else{
                    throw new RuntimeException("插入联系人失败!");
                }
            }catch(Exception e){
                throw new RuntimeException("插入联系人失败:"+e.getMessage());
            }
        }else{
            throw new RuntimeException("联系人不能为空");
        }
    }

    @Transactional
    @Override
    public boolean modifyAddressbook(Addressbook addressbook) {
        if(addressbook.getAddressbookId()!=null && !"".equals(addressbook.getAddressbookId())){
            addressbook.setLastEditTime(new Date());
            try{
                int effectedNum = addressbookDao.updateAddressbook(addressbook);
                if(effectedNum>0)
                    return true;
                else{
                    throw new RuntimeException("更新联系人失败!");
                }
            }catch(Exception e){
                throw new RuntimeException("更新联系人失败:"+e.getMessage());
            }
        }else{
            throw new RuntimeException("联系人Id不能为空");
        }
    }

    @Transactional
    @Override
    public boolean deleteAddressbook(int id) {
        if(id > 0)
        {
            try{
                int effectedNum = addressbookDao.deleteAddressbook(id);
                if(effectedNum > 0)
                    return true;
                else{
                    throw new RuntimeException("删除联系人失败!");
                }
            }catch(Exception e){
                throw new RuntimeException("删除联系人失败"+e.getMessage());
            }
        }else{
            throw new RuntimeException("删除联系人Id出错! ");
        }
    }
}

controller层

//web层即Controller层

@RestController  //@Controller + @ResponseBody 返回的不是页面,而是实际页面body的值
@RequestMapping("/superadmin")  //指定根路由
public class AddressbookController {
    @Autowired
    private AddressbookService addressbookService;

    @RequestMapping(value = "/listaddressbook",method = RequestMethod.GET)
    private Map<String,Object> listAddressbook(){
        Map<String,Object> modelMap = new HashMap<String,Object>();
        List<Addressbook> list = addressbookService.getAddressbookList();
        modelMap.put("addressbookList",list);
        return modelMap;
    }
//http://127.0.0.1:8080/addressbook/superadmin/addressbookbyid?id=2
    @RequestMapping(value = "/addressbookbyid",method = RequestMethod.GET)
    private Map<String,Object> getAddressbookByid(Integer id)
    {
        Map<String,Object> modelMap = new HashMap<>();
        Addressbook addressbook = addressbookService.getAddressbookById(id);
        modelMap.put("addressbook",addressbook);
        return modelMap;
    }

//      1、@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。
//
//              2、
//
//                通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。
//                例如说以下情况:
//                $.ajax({
//        url:"/login",
//        type:"POST",
//        data:'{"userName":"admin","pwd","admin123"}',
//        content-type:"application/json charset=utf-8",
//        success:function(data){
//          alert("request success ! ");
//        }
//    });
//
//    @requestMapping("/login")
//    public void login(@requestBody String userName,@requestBody String pwd){
//      System.out.println(userName+" :"+pwd);
//    }
//    这种情况是将JSON字符串中的两个变量的值分别赋予了两个字符串
    @RequestMapping(value="/addaddressbook",method=RequestMethod.POST)
    private Map<String,Object> addAddressbook(@RequestBody Addressbook addressbook){
        Map<String,Object> modelMap = new HashMap<>();
        modelMap.put("success",addressbookService.addAddressbook(addressbook));
        //返回: success:true
        return modelMap;
    }

    @RequestMapping(value = "/modifyaddressbook",method=RequestMethod.POST)
    private Map<String,Object> modifyAddressbook(@RequestBody Addressbook addressbook){
        Map<String,Object> modelMap = new HashMap<>();
        modelMap.put("success",addressbookService.modifyAddressbook(addressbook));
        return modelMap;
    }

    @RequestMapping(value = "/removeaddressbook",method = RequestMethod.GET)//这里为了方便用GET请求
    private Map<String,Object> removeAddressbook(Integer id){
        Map<String,Object> modelMap = new HashMap<>();
        modelMap.put("sucess",addressbookService.deleteAddressbook(id));
        return modelMap;
    }

}

相关文章

网友评论

      本文标题:Service层和Controller层的开发

      本文链接:https://www.haomeiwen.com/subject/uzhqoqtx.html