发表于: 2019-11-02 11:20:35
1 917
今日想法:
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放入该接口查询。
返回第三层的结果集。至此,大接口就实现。分级查询就完成了。
明日想法:
想办法学习循环和遍历等语法和使用,完成最后两个大的接口,并进行测试。
顺便搞一份思维流程导图,告诉各位我的两个大接口的想法。
评论