发表于: 2019-11-02 11:20:35

1 916


今日想法:


2.编写新的业务层接口,也算是先提前写好。

(把多个持久层的表的小接口,通过循环遍历的方式整合成大接口)

2.1.留言表实现获取留言者IP并跟着留言内容一起放入留言表。

(留言表的pid=对应留言作品的id,用来做关联标签)

2.2.调用各表的各接口来循环遍历,实现全表模糊查询。(多个list集合,放到map里。

2.3.调用各表的各接口来循环遍历,实现全表分级查询。(多个list集合,放到map里。


今日作为:


昨天已经把各个表的各个小接口给写完和测完了,全部正常没问题。

那么现在就是要把各个表的各个小接口,在业务层的实现类中组合成几个大接口。

最简单的三个大接口为轮播图,留言,第一层。

最困难的两个大接口为全表模糊查询和全表分级查询。

先提前把这五个大接口的业务层接口和实现先写好,内容再慢慢填充。


轮播图的持久层的实现

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace="com.clxs.dao.BannerDao">

   <sql id="List">
       id, url,img,pid
   </sql>

   <select id="SelectByAll" resultType="com.clxs.pojo.Banner">
       select <include refid="List"/>
       from banner
   </select>

</mapper>

轮播图的持久层的接口

package com.clxs.dao;

import com.clxs.pojo.Banner;

import java.util.List;

//轮播图的持久层的接口
public interface BannerDao {

//    查询所有轮播图
   List<Banner> SelectByAll();

}

轮播图的持久层的接口的测试

package com.clxs.dao;

import com.clxs.pojo.Banner;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:spring/applicationContext.xml"})

public class BannerDaoTest {

   @Autowired
   BannerDao bannerDao;

   @Test
   public void selectByAll() {
       List<Banner> all=bannerDao.SelectByAll();
       System.out.println(all);
   }

}

轮播图的业务层的实现

package com.clxs.service.impl;

import com.clxs.dao.BannerDao;
import com.clxs.pojo.Banner;
import com.clxs.service.BannerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

//轮播图的业务层接口实现类
@Service
public class BannerServiceimpl implements BannerService {

   @Autowired
   private BannerDao bannerDao;

//查询所有的轮播图
   @Override
   public List<Banner> SelectByAll() {
       List<Banner> all = bannerDao.SelectByAll();
       return all;
   }

}

轮播图的业务层的接口

package com.clxs.service;

import com.clxs.pojo.Banner;

import java.util.List;

//轮播图的业务层接口
public interface BannerService {

//    查询所有轮播图
   List<Banner> SelectByAll();

}

轮播图的业务层的接口的测试

package com.clxs.service;

import com.clxs.pojo.Banner;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:spring/applicationContext.xml"})

public class BannerServiceTest {

   @Autowired
   BannerService bannerService;

   @Test
   public void selectByAll() {
       List<Banner> all = bannerService.SelectByAll();
       System.out.println(all);
   }

}

轮播图的接口的测试的结果(成功(表格-持久实现-持久接口-业务实现-业务接口-全部测试=正常

留言的持久层的实现

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace="com.clxs.dao.MessageDao">

   <sql id="List">
       id,ip,content,pid
   </sql>

   <select id="SelectByPid" resultType="com.clxs.pojo.Message">
       select <include refid="List"/>
       from message
       where pid =#{pid}
   </select>

</mapper>

留言的持久层的接口

package com.clxs.dao;

import com.clxs.pojo.Message;

import java.util.List;

//留言的持久层的接口
public interface MessageDao {

//    根据pid来查询作品的留言
   List<Message> SelectByPid(Integer integer);

}

留言的业务层的实现

package com.clxs.service.impl;

import com.clxs.dao.MessageDao;
import com.clxs.pojo.Message;
import com.clxs.service.MessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

//留言的业务层接口实现类
@Service
public class MessageServiceimpl implements MessageService {

//通过注解的方式使用对应的持久层接口
   @Autowired
   MessageDao messageDao;

//    根据pid进行父子查询
   @Override
   public List<Message> SelectByPid(Integer integer) {
       List<Message> all = messageDao.SelectByPid(integer);
       return all;
   }

}

留言的业务层的接口

package com.clxs.service;

import com.clxs.pojo.Message;

import java.util.List;

//留言的业务层接口
public interface MessageService {

//    根据pid进行父子查询
   List<Message> SelectByPid(Integer integer);

}

留言的业务层的测试

package com.clxs.service;

import com.clxs.pojo.Message;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:spring/applicationContext.xml"})

public class MessageServiceTest {

   @Autowired
   MessageService messageService;

   @Test
   public void selectByPid() {
       Integer integer = 5 ;
       List<Message> all = messageService.SelectByPid(5);
       System.out.println(all);
   }

}

留言的业务层的测试的结果(成功(表格-持久实现-持久接口-业务实现-业务接口-全部测试=正常

第一层的持久层的实现

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace="com.clxs.dao.WorkDao">

   <sql id="List" >
       id,name
   </sql>

   <select id="SelectByAll" resultType="com.clxs.pojo.Work">
       select <include refid="List"/>
       from work
   </select>

</mapper>

第一层的持久层的接口

package com.clxs.dao;

import com.clxs.pojo.Work;

import java.util.List;

//第一层分类的持久层的接口
public interface WorkDao {

//    查询所有分类
   List<Work> SelectByAll ();

}

第一层的业务层的实现

package com.clxs.service.impl;

import com.clxs.dao.WorkDao;
import com.clxs.pojo.Work;
import com.clxs.service.WorkService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


@Service
public class WorkServiceimpl implements WorkService {

   @Autowired
   WorkDao workDao;

   @Override
   public List<Work> SelectByAll() {
       List<Work> all = workDao.SelectByAll();
       return all;
   }

}

第一层的业务层的接口

package com.clxs.service;

import com.clxs.pojo.Work;

import java.util.List;

public interface WorkService {

   List<Work> SelectByAll();

}

第一层的业务层的测试

package com.clxs.service;

import com.clxs.pojo.Work;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:spring/applicationContext.xml"})

public class WorkServiceTest {

   @Autowired
   WorkService workService;

   @Test
   public void selectByAll() {
       List<Work> all = workService.SelectByAll();
       System.out.println(all);
   }

}

第一层的业务层的测试的结果(成功(表格-持久实现-持久接口-业务实现-业务接口-全部测试=正常

截至目前,三个简单的大接口已经写完了,并且全部都已经通过测试。

那么接下来就顺手把控制层给测了吧,看看这三个大接口如何,启动tomcat和postman。

轮播图的控制层的接口和实现

@ResponseBody
@RequestMapping(value = "/Banner" , method = RequestMethod.GET)
public List<Banner> SelectByAllByBanner(){
   List<Banner> banner = bannerService.SelectByAll();
   return banner;
}

留言的控制层的接口和实现

@ResponseBody
@RequestMapping(value = "/Message/{id}" , method = RequestMethod.GET)
public List<Message> SelectByPidByMessage(@PathVariable Integer id){
   List<Message> message = messageService.SelectByPid(id);
   return message;
}

第一层的控制层的接口和实现

@ResponseBody
@RequestMapping(value = "/Work" , method = RequestMethod.GET)
public List<Work> SelectByAllByWork(){
   List<Work> work = workService.SelectByAll();
   return work;
}

轮播图的控制层的接口和实现的postman的测试结果(成功(全部接口和实现都正常

留言的控制层的接口和实现的postman的测试结果(成功(全部接口和实现都正常

第一层的控制层的接口和实现的postman的测试结果(成功(全部接口和实现都正常

控制层目前的全部情况

package com.clxs.controller;

import com.clxs.pojo.Banner;
import com.clxs.pojo.Message;
import com.clxs.pojo.Work;
import com.clxs.service.BannerService;
import com.clxs.service.MessageService;
import com.clxs.service.WorkService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
public class FrontController {

   @Autowired
   BannerService bannerService;

   @Autowired
   MessageService messageService;

   @Autowired
   WorkService workService;

   @ResponseBody
   @RequestMapping(value = "/Banner" , method = RequestMethod.GET)
   public List<Banner> SelectByAllByBanner(){
       List<Banner> banner = bannerService.SelectByAll();
       return banner;
   }

   @ResponseBody
   @RequestMapping(value = "/Message/{id}" , method = RequestMethod.GET)
   public List<Message> SelectByPidByMessage(@PathVariable Integer id){
       List<Message> message = messageService.SelectByPid(id);
       return message;
   }

   @ResponseBody
   @RequestMapping(value = "/Work" , method = RequestMethod.GET)
   public List<Work> SelectByAllByWork(){
       List<Work> work = workService.SelectByAll();
       return work;
   }

}


OK,三个大的接口已经完成,还剩下两个最难的大接口。(全表的模糊查询和分级查询)


心情舒畅了很多?


今日学习:


1.如何写SSM的配置文件。

2.如何写持久层的测试。

3.如何写业务层的测试。

4.如何写持久层的接口和实现。

5.如何写业务层的接口和实现。

6.如何写控制层的接口和实现。

7.如何指定请求地址,请求方式,拦截请求内容。


今日问题:


剩下的两个大接口,因为我的基础和语法很差,不扎实。

在没有看到示例代码的情况下,我还真不知道怎么开始抄抄改改。

对for循环,遍历,迭代,递归,等等,很模糊。

有思想是好事,但是因为不懂语法,导致不知道怎么写怎么拼代码。

就好像你知道这个字怎么念怎么读,但是你却一笔一划都不会怎么写,更别说拼音字母了。


核心的思想是把各个表的各个小接口,在业务层实现中,用循环遍历的方式组合起来,形成大接口。


不过我还是选择走老大的思想,不懂就去百度,哪里不懂搜哪里。

先思考一下自己的大接口实现的逻辑流程,一步一步的根据自己的需求来搜需要的知识。


传入第一层的ID,并调用第二层的PID查询接口。

将传入的第一层的ID放进该接口查询,返回第二层的结果集。

遍历出第二层的结果集,取出结果集中的ID。

调用第三层的PID查询接口,将从结果集中取出的ID放入该接口查询。

返回第三层的结果集。至此,大接口就实现。分级查询就完成了。


明日想法:


想办法学习循环和遍历等语法和使用,完成最后两个大的接口,并进行测试。


顺便搞一份思维流程导图,告诉各位我的两个大接口的想法。


返回列表 返回列表
评论

    分享到