在上一篇文章中完成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表中所有数据