#项目模块编程实现(MVC)
1)编写实体类:Project (属性名最好与表中字段对应)
2)编写DAO接口:ProjectDao
3)编写DAO接口对应的Mapper:ProjectMapper.xml
4)编写Service接口及实现类:ProjectService,ProjectServiceImpl
5)编写Junit测试
6)编写Controller类:ProjectController
7)编写页面及JS代码
#项目模块中项目列表信息的实现
##1)编写实体类:Project
class Project implements Serializable{
private Integer id;
.......
}
##2)编写ProjectDao:添加查询方法
package cn.tedu.ttms.product.dao;
interface ProjectDao{
List<Project> findObjects();
}
##3)编写ProjectMapper.xml文件放在dao包内
<mapper namespace="cn.tedu.ttms.product.dao.ProjectDao">
<select id="findObjects"
resultType="cn.tedu.ttms.product.entity.Project"
select * from tms_projects
</select>
</mapper>
##4)编写ProjectService及实现类并添加findObjects方法
interface ProjectService{
List<Project> findObjects();
}
class ProjectService implements ProjectService{
@Autowired
private ProjectDao projectDao;
@Override
public List<Project> findObjects() {
List<Project> list=projectDao.findObjects();
return list;
}
}
##5)编写单元测试类TestProjectService测试业务数据
public class TestProjectService {
ClassPathXmlApplicationContext ctx;
@Before
public void init(){
ctx=new ClassPathXmlApplicationContext(
"spring-mvc.xml","spring-mybatis.xml");
}
@Test
public void testFindObjects(){
//1.获得ProjectService对象
ProjectService projectService=
ctx.getBean("projectServiceImpl",
ProjectService.class);
//2.执行ProjectService对象的findObjects方法
List<Project> list=
projectService.findObjects();
//3.验证结果是否正确
Assert.assertNotEquals(0, list.size());
//4.输出执行结果
System.out.println(list);
}
@After
public void destory(){
ctx.close();
}
##6)编写ProjectController添加相关方法
@Controller
@RequestMapping("/project/")
public class ProjectController {
@Autowired
private ProjectService projectService;
@RequestMapping("listUI")
public String listUI(){
return "product/project_list";
}
@RequestMapping("doGetObjects")
@ResponseBody
public List<Project> doGetObjects(){
List<Project> list=projectService.findObjects();
return list;
}
}
##7)编写页面对应的js代码(参考project_list.js)
$(document).ready(function(){
doGetObjects();
})
/*获取项目信息*/
function doGetObjects(){
var url="project/doGetObjects.do";
//发起异步请求获取服务端数据
$.getJSON(url,function(result){//callback method
//console.log(result);//json对象
//将数据显示在table的tbody位置
setTableBodyRows(result);//map中的key对应的值
});
}
/*将数据填充在table对象的body中*/
function setTableBodyRows(result){//扩展作业
debugger
//1.获得tbody对象
var tBody=$("#tbodyId");
tBody.empty();
//2.迭代数据集result
//for(var i=0;i<result.length;i++){}
for(var i in result){
//2.1构建一个tr对象
var tr=$("<tr></tr>");
//2.2构建每行td对象(一行有多个)
//var td0=$("<td></td>");
//....
//2.3在td对象内容填充具体数据
//td0.append(result[id].id);
//....
var tds="<td><input type='checkbox' name='checkId' value='"+result[i].id+"'></td>"+
"<td>"+result[i].code+"</td>"+
"<td>"+result[i].name+"</td>"+
"<td>"+result[i].beginDate+"</td>"+
"<td>"+result[i].endDate+"</td>"+
"<td>"+(result[i].valid?"有效":"无效")+"</td>"+
"<td><input type='button' class='btn btn-default' value='修改'/></td>";
//2.4将td添加到tr对象中(一行要放多个)
tr.append(tds);
//2.5将tr追加到tbody中
tBody.append(tr);
}
}
#日期转换方法
##通过js
new Date(Long time).toLocaleDateString
##通过JsonSerialize
/**springmvc 在将日期对象转换为字符串时,
* 一般默认会转换为长整型,假如我们需要自己
* 定义格式,通常会写一个类继承JsonSerialize,\
* 假如在对象中需要将日期转换为我们需要的格式
* 可以在对应的实体对象的get方法中使用
* @JsonSerialize(using=JsonDateTypeConvert.class)
* */
public class JsonDateTypeConvert
extends JsonSerializer<Date>{
/**
* @param value 是要转换的日期
* @param gen 为一个json对象生成器
* */
@Override
public void serialize(Date value,JsonGenerator gen,
SerializerProvider serializers)throws IOException,
JsonProcessingException {
//定义日期字符串转换对象
SimpleDateFormat sdf=
new SimpleDateFormat("yyyy/MM/dd");
//将日期转换为指定格式字符串
String dateStr=sdf.format(value);
//将此字符串写入到json对象中
gen.writeString(dateStr);
}//
}//