发表于: 2018-01-17 09:53:57

2 559


编辑日报内容...

今天完成的事情:

完成t10t11页面

1  t11分析:

t11用到一张表job表,有一个正在学习的人数,是从student表查询出来的

所以学习了连接查询的sql语句

 

-- 1,  普通连接查询,查询所有学生,带职业,注意这是普通查询
SELECT student.name,student.brief_introduce,job.job_name
FROM student,job
WHERE student.job_id=job.job_id;
-- 2,  本句和 1 一样,只是为表取别名,缩短语句长度
SELECT s.name,s.brief_introduce,j.job_name
FROM student s,job j
WHERE s.job_id=j.job_id;

-- 3,  普通连接查询,跟 1、2类似,但是,是查询优秀学生,多加了一个条件。
SELECT s.name,s.brief_introduce,j.job_name
FROM student s,job j
WHERE s.job_id=j.job_id AND s.is_excellent=1;

-- 4,  和3类似,但是查询优秀学生的所有字段,直接用*
SELECT s.*,j.job_name
FROM student s,job j
WHERE s.job_id=j.job_id AND s.is_excellent=1;

-- 5,  内连接查询,和4效果一致
SELECT s.*,j.job_name
FROM student s
INNER JOIN job j
ON s.job_id=j.job_id AND s.is_excellent=1;

-- 6, 左连接查询


-- 9,子连接
SELECT count(*)
FROM student
WHERE is_studying=1 AND job_id=(
SELECT job_id
FROM job
WHERE job_name='Java');


开始写代码:

controller层调用查询获得每个job的信息,和每个job正在学习的人数

 

// t11首页
@RequestMapping(value = "/t11")
public String t11Controller(Model model) {
// 获得所有职业 列表形式
   List<Job> jobs= jobService.listAllJob();
   model.addAttribute("jobs", jobs);

   // 获取每个职业,正在学习的人数
   List<Long> jobStudyingNumbers = new ArrayList<>();
   for (int i = 0; i < jobs.size(); i++) {
Job job = jobs.get(i);
       long num = studentService.countJobStudyingNumbers(job);
       jobStudyingNumbers.add(num);
   }
model.addAttribute("numbers", jobStudyingNumbers);
   return "/t11";
}


service层编写查询的服务:

 JobService中获取所有职业信息

@Service
public class JobService {
@Autowired
   private JobMapper jobMapper;


   public List<Job> listAllJob() {
JobExample example = new JobExample();
       JobExample.Criteria criteria = example.createCriteria();
       criteria.andIdIsNotNull();
       List<Job> jobs = jobMapper.selectByExample(example);
       return jobs;
   }
}


StudentService中获取正咋学习某项职业的人数

// 查询正在学习某项职业的学生人数
public long countJobStudyingNumbers(Job job) {
Integer jobId = job.getJobId();
   StudentExample example = new StudentExample();
   StudentExample.Criteria criteria = example.createCriteria();
   criteria.andJobIdEqualTo(jobId);
   criteria.andIsStudyingEqualTo(1);
   long jobStudyingNumbers= studentMapper.countByExample(example);
   return jobStudyingNumbers;
}

jsp文件中,取出数据

 

<div class="row padding-bottom">

   <c:forEach items="${requestScope.jobs}" var="job" varStatus="status">
<div class="col-md-4 col-sm-6 col-xs-12 top-margin">

           <div class="warp-border">
               <div class="clearfix">
                   <div class="icon-people"><img src="${APP_PATH}/statics/t11images/687.png"></div>
                   <div class="text">
                       <h4 class="">${job.jobName}</h4>
                       <p class="text-present">${job.introduce}</p>
                   </div>
               </div>

               <div class="warp-class2">
                   <div class="warp-class2-text">
                       <div class="iconfont text-padding">门槛
                    <c:forEach var ="i" begin="1" end= "${job.entryBarrier}">
                                <%-- entryBarrier字段为int,值为几,就添加几个星星 --%>
                               <img src="${APP_PATH}/statics/t11images/xx.png">
                           </c:forEach>
                       </div>
                   </div>
                   <div class="warp-class2-text">
                       <div class="iconfont text-padding text-border-left">难易程度
                    <c:forEach var ="i" begin="1" end= "${job.difficultLevel}">
                               <img src="${APP_PATH}/statics/t11images/xx.png">
                           </c:forEach>
                       </div>
                   </div>
               </div>
               <div class="warp-class2">
                   <div class="warp-class2-text">
                       <div class="iconfont text-padding">成长周期
                           <span class="iconfont-color">${job.growTime}</span>
                       </div>
                   </div>
                   <div class="warp-class2-text">
                       <div class="iconfont text-padding text-border-left">稀缺程度 <span class="iconfont-color">${job.firmRequiredNum}</span>家公司需要</div>
                   </div>
               </div>

               <div class="warp-class2">
                   <div class="leftWarp">
                       薪资待遇
                   </div>
                   <div class="rightWarp">
                       <div class="rightWarp-class">
                           <div class="rightWarp-year">0-1</div>
                           <div class="rightWarp-wages">${job.salary1}K/</div>
                       </div>
                       <div class="rightWarp-class">
                           <div class="rightWarp-year">0-1</div>
                           <div class="rightWarp-wages">${job.salary2}K/</div>
                       </div>
                       <div class="rightWarp-class border-bottom">
                           <div class="rightWarp-year">0-1</div>
                           <div class="rightWarp-wages">${job.salary3}K/</div>
                       </div>
                   </div>
               </div>

               <div class="warp-class2">
                   <c:forEach items="${requestScope.numbers}" var="numbers" varStatus="numstatus">
                       <c:if test="${status.index == numstatus.index}">
                           <b class="text-b">${numbers}人正在学</b>
                       </c:if>
                   </c:forEach>
               </div>
               <div class="warp-class2">
                   <p class="text-p">提示:${job.tips}</p>
               </div>

               <div class="flip-container">
                   <p class="flip-title">${job.jobName}</p>
                   <p class="flip-text">${job.introduce}</p>
               </div>
           </div>

       </div>
   </c:forEach>

</div>


查看页面:正常访问:


查看debug信息:sql语句:

首先查出每个职业的信息

然后查出四个职业对应的正在学习的学生人数:




明天计划的事情:

完成任务4

遇到的问题:

刚刚部署好,Nginx处理静态资源出问题,暂时未解决。


更新:已解决:

Nginx静态资源的位置:

复制静态文件到相应位置即可

cp -rf /home/bpzj/data/repo/task4/src/main/webapp/statics /usr/share/nginx/statics/task4/statics 

 

收获:

<c:forEach> begin end step varStatus的用法

${status.index}      索引,从0开始。

${status.count}      计数,从1开始。

${status.current}    当前这次迭代的(集合中的)项

${status.first}  判断当前项是否为集合中的第一项,返回值为truefalse

${status.last}   判断当前项是否为集合中的最后一项,返回值为truefalse

 

<c:if> 的用法

<div class="warp-class2">
   <c:forEach items="${requestScope.numbers}" var="numbers" varStatus="numstatus">
       <c:if test="${status.index == numstatus.index}">
            <b class="text-b">${numbers}人正在学</b>
       </c:if>
    </c:forEach>
</div>



返回列表 返回列表
评论

    分享到