发表于: 2018-01-16 09:22:12

2 586


编辑日报内容...

今天完成的事情:

进行任务4

1  可以动态变化的地方有三个:

1

                                             

2

3

 

2  设计数据表

我认为可以算业务模型的表只有两个,就是学生和职业。

如果真的建两张表,是有一个问题的。那就是建不建外键。

在阿里的java开发手册中:

6. 【强制】不得使用外键与级联,一切外键概念必须在应用层解决。

说明:以学生和成绩的关系为例,学生表中的 student_id是主键,那么成绩表中的 student_id则为外键。如果更新学生表中的 student_id,同时触发成绩表中的 student_id 更新, 即为级联更新。外键与级联更新适用于单机低并发,不适合分布式、高并发集群; 级联更新是强阻塞,存在数据库更新风暴的风险; 外键影响数据库的插入速度。

 

我这里用了一个不是主键的额外字段做关联字段,假如我们是分布式高并发,那就不用外键和级联属性。

1 student

阿里java规范中说:

所以这里有两个字段是表达是否概念的:是否正在学习(1表示正在学习,0表示工作),是否为优秀学生(1表示是)

 

 

2 job表,职业表

 

3  写出domaindao/mapper

然后使用mybatis逆向工程生成domainmapper层。


4  使用mybatis插入几个学生对象

放在test中

 

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class AddStudentTest {

@Autowired
   StudentMapper studentMapper;

   @Autowired
   SqlSession sqlSession;

   @Test
   public void addStudent() {
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
       for (int i=1;i<5;i++) {
Student student = new Student
(i, "罗大佑", 1, "一声梧叶一声秋", i % 2, i % 2);
           studentMapper.insertSelective(student);
       }

}

}



5  编辑serviceController

t10页面中需要的动态数据有三个:2个学生数量(long),一个学生List。所以需要三个查询。

 

1 service代码

 

@Service
public class StudentService {

@Autowired
   private StudentMapper studentMapper;


   public long countTotalStudent() {
/**
        * 获取所有学生数量
        */
       long totalNum;
       // 创建一个条件
       StudentExample example = new StudentExample();
       StudentExample.Criteria criteria = example.createCriteria();
       // StudyCondition 字段不为空就统计,这里统计整数
       criteria.andIsStudyingIsNotNull();
       totalNum = studentMapper.countByExample(example);
       return totalNum;
   }

public long countWorked() {
/**
        * 获取已经工作的学生数量
        */
       long workedStudentNum;
       StudentExample example = new StudentExample();
       StudentExample.Criteria criteria = example.createCriteria();
       // 1表示还在学习,没有工作。0表示有工作,不在学习。
       criteria.andIsStudyingEqualTo(0);

       workedStudentNum = studentMapper.countByExample(example);
       return workedStudentNum;
   }

public List<Student> listExcellent() {
/**
        * 获得 优秀学生的list
        */
       StudentExample example = new StudentExample();
       StudentExample.Criteria criteria = example.createCriteria();
       criteria.andIsExcellentEqualTo(1);
       List<Student> students = studentMapper.selectByExample(example);
       return students;
   }
}


 

2 controller代码

 



@Controller
public class DemoController {
private Logger logger = Logger.getLogger(DemoController.class);

   @Autowired
   private StudentService studentService;

   @RequestMapping(value = "/t10index")
public String t10Controller(Model model) {
// 累计学习人数和已经找到工作人数
       long totalNum = studentService.countTotalStudent();
       model.addAttribute("totalNum", totalNum);

       long workedNum = studentService.countWorked();
       model.addAttribute("workedNum", workedNum);

       // 优秀学员展示
       List<Student> excellentStudents = studentService.listExcellent();
       model.addAttribute("students",excellentStudents);
       return "/t10index";
   }

// t11首页
   @RequestMapping(value = "/t11index")
public String t11Controller() {
logger.info("d");
       return "/t11index";
   }


// 使用json传递数据
   @RequestMapping(value = "/t10usejson")
@ResponseBody
   public String t10UseJson() {
return "";
   }
}


 期间参考阿里命名规范:

 

6  编辑t10首页视图jsp()

 

1 使用c标签把数据填入到jsp

       先把原来的html直接改后缀名为jsp,添加头部信息,得到初步jsp文件

2 注意静态文件的路径:

使用相对路径

<link href="../../statics/Untitled-3.css" rel="stylesheet" type="text/css">

使用绝对路径

<%
   pageContext.setAttribute("APP_PATH", request.getContextPath());
%>
<link href="${APP_PATH}/statics/Untitled-3.css" rel="stylesheet" type="text/css">

推荐使用绝对路径

 使用cdn加速

<link href="https://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" type="text/css">


数据填充,修改jsp文件三个地方:

两个数量:

<div class="col-xs-12 col-sm-6 col-md-6 col-lg-3 text-center">
   <p>
       <img src="${APP_PATH}/statics/t10images/453254312.png">${totalNum}<br>
       <span class="up-3">累计在线学习人数</span>
   </p>
   <p>
       <img src="${APP_PATH}/statics/t10images/453254312.png">${workedNum}<br>
       <span class="up-3">学员已经找到满意工作</span>
   </p>
</div>

一个列表

<!--第三部分开始-->
<div class="main-c row">
   <h3 class="text-center main-tab">优秀学员展示</h3>
   <ul class="list-unstyled text-center">
       <c:forEach items="${requestScope.students}" var="students">
           <li class="col-xs-12 col-sm-6 col-md-6 col-lg-3">
               <div>
                   <img src="${APP_PATH}/statics/t10images/242424.png">
                   <span>技术顾问:${students.name}</span>
                   <p class="text-left">${students.briefIntroduce}</p>
               </div>
           </li>
       </c:forEach>
   </ul>
</div>

 

访问t10页面,成功

还没部署到服务器

明天计划的事情:

尽量完成任务4,学习mybatis逆向工程生成的代码,有时间试试用json格式。

 

遇到的问题:

刚开始字段用了一个condition来表示是在学习还是毕业的状态,报错sql语法错误

因为conditionmysql的保留字,所以不可以用,改成is_studying字段

 

收获:

更加熟悉ssm框架搭建(用了大概1个小时,写好所有配置,尽力靠记忆写,实在想不起来再看以前的配置)

c标签的简单用法。



返回列表 返回列表
评论

    分享到