基础
- controller:
@Controller
public class EmploeeController {
@Autowired
EmploeeService emploeeService;
/**
* @return
* 查询员工数据(分页查询)
*/
@RequestMapping("/emps")
public String getEmps(@RequestParam(value="pn",defaultValue="1")Integer pn,
Model model) {
PageHelper.startPage(pn, 5);
List<Emploee> emps=emploeeService.getAll();
PageInfo page=new PageInfo(emps,5);
model.addAttribute("pageInfo",page);
return "list";
}
}
- service:
@Service
public class EmploeeService {
@Autowired
EmploeeMapper emploeeMapper;
public List<Emploee> getAll() {
// TODO Auto-generated method stub
return emploeeMapper.selectByExampleWithDept(null);
}
}
- dao:
List<Emploee> selectByExampleWithDept(EmploeeExample example);
- mapper:
<?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.cqu.dao.EmploeeMapper">
<resultMap type="com.cqu.bean.Emploee" id="WithDeptResultMap">
<id column="emp_id" jdbcType="INTEGER" property="empId" />
<result column="emp_name" jdbcType="VARCHAR" property="empName" />
<result column="gender" jdbcType="BIT" property="gender" />
<result column="email" jdbcType="VARCHAR" property="email" />
<result column="d_id" jdbcType="INTEGER" property="dId" />
<association property="department" javaType="com.cqu.bean.Department">
<id column="dept_id" property="deptId"/>
<result column="dept_name" property="deptName"/>
</association>
</resultMap>
<sql id="WithDept_Colum_List">
e.emp_id, e.emp_name, e.gender, e.email, e.d_id,d.dept_id,d.dept_name
</sql>
<select id="selectByExampleWithDept" resultMap="WithDeptResultMap">
select
<if test="distinct">
distinct
</if>
<include refid="WithDept_Colum_List" />
FROM tbl_emp e
left join tbl_dept d on e.`d_id`=d.`dept_id`
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
</mapper>
-
数据库表结构
测试部分
- MVCTest.java
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations= {"classpath:applicationContext.xml","file:src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml"})
public class MVCTest {
@Autowired
WebApplicationContext context;
MockMvc mockMVC;
@Before
public void initMockMvc() {
mockMVC=MockMvcBuilders.webAppContextSetup(context).build();
}
@Test
public void testPage() throws Exception {
MvcResult result=mockMVC.perform(MockMvcRequestBuilders.get("/emps").param("pn","1")).andReturn();
MockHttpServletRequest request=result.getRequest();
PageInfo pi=(PageInfo) request.getAttribute("pageInfo");
System.out.println("当前页码:"+pi.getPageNum());
System.out.println("总页码:"+pi.getPages());
System.out.println("总记录数:"+pi.getTotal());
System.out.println("当前页面需要连续显示的页码:");
int[] nums=pi.getNavigatepageNums();
for(int i:nums) {
System.out.print(" "+i);
}
//获取员工数据
List<Emploee> list=pi.getList();
for(Emploee emploee:list) {
System.out.println("ID:"+emploee.getEmpId()+"==>Name:"+emploee.getEmpName());
}
}
}
- 返回展示数据
当前页码:1
总页码:21
总记录数:102
当前页面需要连续显示的页码:
1 2 3 4 5ID:1==>Name:Tom
ID:2==>Name:Tom
ID:3==>Name:d4a8b0
ID:4==>Name:590b31
ID:5==>Name:ed92b2
总结
- 测试代码关键部分
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations= {"classpath:applicationContext.xml","file:src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml"})
public class MVCTest {
@Autowired
WebApplicationContext context;
MockMvc mockMVC;
@Before
public void initMockMvc() {
mockMVC=MockMvcBuilders.webAppContextSetup(context).build();
}
- 意义
简化测试流程,不用直接生成网络请求环境,Mock方式模拟HTTP请求。