发表于: 2017-04-10 23:15:09

3 1238


今天完成的任务:

    拆解springMCV.准备在自己建的项目mybatis的基础上,建成自己的springMVC,实践中却遇到很多的问题,看懂和会用有着很大的区别。下午莎莎师兄的“位面”指导,让人叹叹!本来以为自己涉猎广泛,但实际应用中,师兄的指导思考过程让人有“胜读十年书”之感,好好学习,天天向上。

    下面是一个集成了mybatis的增删改查,由最初的JDBC下的增删改查演化而来.

package com.ptteng.test;


import java.io.IOException;

import java.io.InputStream;

import java.io.Reader;

import java.util.List;


import com.ptteng.domain.Student;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;


public class AppTest {


public static void main(String[] args) throws IOException {


String resource = "config.xml";

    InputStream is = AppTest.class.getClassLoader().getResourceAsStream(resource);

    SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);

    SqlSession session = sessionFactory.openSession();

//  //单查

//  String statement = "com.ptteng.mapping.StudentMapper.getStudent";

//  Student student = session.selectOne(statement, 3);

//  System.out.println(student);

//

//  // 增

//  String statement1 = "addStudent";

//

//  Student student1 = new Student();

//  String name = "大智若3愚";

//  student1.setName(name);

//  student1.setAge(23);

//  int retResult=session.insert(statement1,student1);

//  session.commit(); 

//  session.close();

//  System.out.println(retResult);

//  System.out.println(student1.toString());

//

//

//  // 删除

//  String statement2="deleteStudent";

//  Student student2 = session.selectOne(statement2,5);

//  System.out.println(student2);

//

    //查全部

    String statement3="getAllStudent";

    Student student3= new Student();

    student3.getId();

    System.out.println(student3);


    前面的都已经实现,最后查全部的时候遇到问题,运行后结果为;

    师兄在旁边指点,经过分析原因是getAllStudent并没有被执行,而是直接获得对象student3初始值,因为初始化后,整数型的初始值为零,字符串类型的初始值为NULL,虽然在这没有赋予,实际jvm已经给它了一个默认值.

对Java理解不深,自己敲代码的时候,虽然程序没有报错,不分析,仅得出一的结果就蒙过去了.今天因为回来要扩展重建原来的mybatis增删改查项目为springMVC项目才发现.


   接下来,找原因.

   初步分析,在这里主要是要执行"getAllStudent"中包含的sql语句,从mysql获得所有数据结果,问题的关键在于,得到的结果无法通过单个id值映射出来,内容有int型,varchar型,并且是一整个表的数据,所以需要用到lList泛型,修改如下:


   String statement3="getAllStudent";

   /*莎莎师兄教了一个技巧,非常有用,虽然我不知道session对象可以调用什么方法,但是可以通过"."的提示,选择相关的方      法,其中包含很多信息,给编程带来了相当的方便.*/

   List<Student> studentList=session.selectList(statement3); 


这样成功的执行了查询语句,获得了所有的mysql表中的数据.


接下来要测试是否成功的获得了数据,将得到的结果输出在Console上来检验,但结果是一个表单,如何分行显示?

分析:分行显示每打印出一个id代表的相关信息,就需要换行,System.out.println() 需要按id分步执行,for循环可以让该方法逐个id打印,难以确定的是无法知道获得的数据表单大小,循环体的大小无法确定.师兄提醒还是用"."的方法查看studentList对象有什么可调用的方法来确定其大小.果然找到了size()这个方法,问题终于解决,遍历一次,分行打印出所有结果.


 for( int i=1; i<studentList.size();i++)

{System.out.println(studentList.get(i-1));}


问题解决,留下一个小BUG,name为毛是?

明天的计划:

    今天任务进度拖延了,明天赶上进度,敲出自己的springMVC。

遇到的问题

    这次辅导,受到了"段位差距"的刺激,本以为已经相当理解了整个建立springMVC项目的逻辑和流程,只是一个重建的过程,没想到连mybatis下的增删改查都掉到了坑里,以前只重逻辑,没有关心具体输出的结果和程序在执行过程中的细节步骤,不报错,有结果就行,写代码太少.基本功不扎实,就算脑子里有很多想法和知识,也联系不起来或者整合,让计算机实现自己的想法,现在发现的早,以后开始做项目了,积累的问题可就积重难返了.一定要重视实践,细节有大坑,一定先先填平,多敲代码,多注意测试反馈.

收获:

    谢谢,莎莎师兄!三人行,必有我师!加油!



返回列表 返回列表
评论

    分享到