Web項目框架搭建【三】——Spring MVC在Controller類中實現接口

在上一篇文章中完成Spring + Spring MVC + MyBatis框架整合之後,訪問URL之後會跳轉顯示相應的jsp頁面。但是在實際工作中,我們會需要通過指定的URL調用後臺接口來請求數據,這就需要通過在Controller類中實現接口。具體操作如下:

1. 在ProjectInfoDAO.java類中新增一個返回類型爲List的方法getAllProject():

package com.tim.dao;

import java.util.List;
import java.util.Map;

import com.tim.bean.ProjectInfoBean;

public interface ProjectInfoDAO {
	int deleteProjectInfoById(int id);
	int insertProjectInfo(ProjectInfoBean projectInfoBean);
	ProjectInfoBean selectProjectInfoById(int id);
	int updateProjectInfo(ProjectInfoBean projectInfoBean);
	List<Map<String, Object>> getAllProject();
}

2. 在ProjectInfoDAO.xml文件中新增該方法對應的sql語句:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.tim.dao.ProjectInfoDAO" >
  <resultMap id="BaseResultMap" type="com.tim.bean.ProjectInfoBean" />
  <select id="selectProjectInfoById" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select * from projectinfo where id = #{id}
  </select>
  <delete id="deleteProjectInfoById" parameterType="java.lang.Integer" >
    delete from projectinfo where id = #{id}
  </delete>
  <insert id="insertProjectInfo" parameterType="com.tim.bean.ProjectInfoBean" >
    insert into projectinfo (projectName, projectManager) values (#{projectName}, #{projectManager})
  </insert>
  <update id="updateProjectInfo" parameterType="com.tim.bean.ProjectInfoBean" >
    update projectinfo set projectName = #{projectName}, projectManager = #{projectManager} where id = #{id}
  </update>
  <select id="getAllProject" resultMap="BaseResultMap" >
    select * from projectinfo
  </select>
</mapper>

3. 在IProjectInfoService.java接口中新增getAllProject()方法,並在ProjectInfoService.java類中實現該方法

service.IProjectInfoService.java:

package com.tim.service;

import java.util.List;
import java.util.Map;

import com.tim.bean.ProjectInfoBean;

public interface IProjectInfoService {
	public ProjectInfoBean getProjectInfoById(int id);
	public List<Map<String, Object>> getAllProject();
}

service.impl.ProjectInfoService.java:

import org.springframework.stereotype.Service;

import com.tim.bean.ProjectInfoBean;
import com.tim.dao.ProjectInfoDAO;
import com.tim.service.IProjectInfoService;

@Service("projectInfoService")
public class ProjectInfoService implements IProjectInfoService {
	@Resource
	private ProjectInfoDAO ProjectInfoDAO;
	
	public ProjectInfoBean getProjectInfoById(int id) {
		return this.ProjectInfoDAO.selectProjectInfoById(id);
	}
	
	public List<Map<String, Object>> getAllProject() {
		return this.ProjectInfoDAO.getAllProject();
	}
}

4. 在ProjectInfoController.java類中新增接口方法getProject(),使用@ResponseBody註解:

package com.tim.controller;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.tim.bean.ProjectInfoBean;
import com.tim.service.IProjectInfoService;

@Controller
@RequestMapping("/projectInfo")
public class ProjectInfoController {
	@Resource
	private IProjectInfoService projectInfoService;
	
	@RequestMapping("/showProjectById")
	public String toIndex(HttpServletRequest request, Model model) {
		int projectInfoId = Integer.parseInt(request.getParameter("projectInfoId"));
		ProjectInfoBean projectInfoBean = this.projectInfoService.getProjectInfoById(projectInfoId);
		model.addAttribute("projectInfoBean", projectInfoBean);
		return "projectInfo";
	}
	
	@RequestMapping(value = "/showProject", method = RequestMethod.GET)
	@ResponseBody
	public List<Map<String, Object>> getProject(HttpServletRequest request) {
		List<Map<String, Object>> list = this.projectInfoService.getAllProject();
		return list;
	}
}

5. 啓動項目,在瀏覽器中輸入URL:

http://localhost:8080/project/projectInfo/showProject

得到數據庫中projectinfo表中所有數據





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章