测试方法,不通过页面(新手期疑惑)

问题:

刚入职,带我的老员工让我搭建SSM框架并实现对数据库的CRUD操作。搭框架简单,测试难住了我(不想通过前台页面操作)。

当时的疑惑主要是:

1)怎么调用我后台控制层中相应的方法?使其启动。

2)添加操作时,将数据写到哪儿?

解决方法:

拿“增”举例:

框架搭建OK后,直接将需要增的东西在controller层中的增方法中一个个set到自己写的实体中,将contoller层中相应方法的参数括号中什么都不写(为了浏览器URL请求时直接请求方法,不需要传值),set好实体后,在下面调用相应的service层方法,将实体传到service的参数中。ok!启动tomcat,在浏览器访问该控制层方法所对应的@RequestMapping("doSaveObject")注解所定义的URL路径。方法执行,数据入库,控制台打印。完美!

@RequestMapping("/jtt/")
@Controller
public class JttController {
    @Autowired
    private JttService jttService;
    
    @RequestMapping("doSaveObject")
    @ResponseBody
    public JsonResult doSaveObject(){
        //json字符串数组
        String str="[{\"id\":\"828\",\"title\":\"容易,.......\",\"doc_content\":\"文章内容\",\"write_time\":\"2018-01-08\",\"author\":\"作者\"}," + "{\"id\":\"829\",\"title\":\"哈哈哈哈哈哈哈哈哈啊哈标题\",\"doc_content\":\"文章内容\",\"write_time\":\"2018-01-08\",\"author\":\"作者\"}]";
        //转化为数组
        Jtt[] ss=(Jtt[])JSONArray.toArray(JSONArray.fromObject(str),Jtt.class);
        //遍历数组,并在每次遍历中给jtt实体赋值
        for(int i=0;i<ss.length;i++){
            Jtt jtt = new Jtt();
            jtt.setId(ss[i].getId());
            jtt.setTitle(ss[i].getTitle());;
            System.out.println(jtt);
            jttService.saveObject(jtt);
            jtt=null;
        }
        return new JsonResult("save ok");
    }

注:

1)new后,用完之后要指向null;

2)里面的JsonResult是自定义的一个封装结果的类。本权限管理项目中是分页查询,需要查询分页信息,这个封装类中的属性有分页信息的和实体的。

3)修改和增一样(直接将新数据set进实体,不同的是sql语句的处理)。查询看情况(查询全部就不需要控制层中相应方法带参数。依条件查询就需要有参数)

4)通过id删除的话,控制层方法中就需要有参数了。需要在浏览器访问的URL中加上参数,如,http://localhost:8080/CGB-JT-SYS-V1.01/jtt/t2.do?id=2(多个参数之间通过&连接)

5)访问URL的确定:ip:端口号/项目名/@RequestMapping注解所定义的路径.do(.do是前端控制器定义的) 

6)更好的测试方法——Junit。

posted @ 2018-10-24 16:16  断点S  阅读(261)  评论(0编辑  收藏  举报