发表于: 2019-11-01 20:17:00
1 1023
今日想法:
1.解决各个表的各个接口和接口实现的问题。
1.1.把现在的各类配置文件,和之前能跑通的项目,做详细对比,然后根据情况修改。
1.2.按照现在的半成品项目,在之前的项目上进行修改,相当于在之前的项目覆盖重写。
1.3.如果上述两个方式还不成功,那就找二大,因为张老师和艾老师今天下午也没解决我这个问题。
2.编写新的业务层接口,也算是先提前写好。
(把多个持久层的表的小接口,通过循环遍历的方式整合成大接口)
2.1.留言表实现获取留言者IP并跟着留言内容一起放入留言表。
(留言表的pid=对应留言作品的id,用来做关联标签)
2.2.调用各表的各接口来循环遍历,实现全表模糊查询。(多个list集合,放到map里。
2.3.调用各表的各接口来循环遍历,实现全表分级查询。(多个list集合,放到map里。
3.回头再把各个表对应的各个接口和实现的报错给解决,然后从持久层开始测,到业务层,到控制层,一路测完。
今日作为:
找张老师和艾老师也没能解决问题,最后去找了二大,才得以解决问题。
详细参考案例如下
主要的问题是在于对测试类的使用流程不清楚,测试类并不是那么简单就能写的,还有依赖包错误。
目前对测试类的理解有了新的认知,觉得是一个完全独立出来的功能,甚至需要配置文件去再次扫描包。
然后我使用的依赖包也是有问题的,和junit重名了,但并不是测试用的,也没有测试类上下文。
后来经过二大的一番调教后,增加了测试类上下文,对需要的配置文件进行单独扫描,才测试跑通。
学习了很多很多,老大也对我的学习思想进行了一番直到,受益匪浅。
改错跑通的同时,也证明了我的接口是没有写错的,那么接下来我将对各个接口进行改进和测试。
来对我的各个表的各个小接口进行细致入微的测试,以确保在我把它们整合成大接口前都是正常的。
轮播图的实现
<?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);
}
}
轮播图的测试结果
留言的实现
<?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 pid);
}
留言的测试
package com.clxs.dao;
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 MessageDaoTest {
@Autowired
private MessageDao messageDao;
@Test
public void selectByPid() {
List<Message> all = messageDao.SelectByPid(1);
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.dao;
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 WorkDaoTest {
@Autowired
private WorkDao workDao;
@Test
public void selectByAll() {
List<Work> all = workDao.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.WorkshopDao">
<sql id="List" >
id,name,introduction,img,pid
</sql>
<select id="SelectByPid" resultType="com.clxs.pojo.Workshop">
select <include refid="List"/>
from workshop
where pid =#{pid}
</select>
</mapper>
第二层的接口
package com.clxs.dao;
import com.clxs.pojo.Workshop;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
//第二层工作室的持久层接口
public interface WorkshopDao {
// 根据pid来进行父子查询
List<Workshop> SelectByPid(Integer pid);
}
第二层的测试
package com.clxs.dao;
import com.clxs.pojo.Workshop;
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"})
class WorkshopDaoTest {
@Autowired
private WorkshopDao workshopDao;
@Test
public void selectByPid() {
List<Workshop> all = workshopDao.SelectByPid(1);
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.WorkerDao">
<sql id="List" >
id,name,introduction,img,pid
</sql>
<select id="SelectByPid" resultType="com.clxs.pojo.Worker">
select <include refid="List"/>
from worker
where pid =#{pid}
</select>
</mapper>
第三层的接口
package com.clxs.dao;
import com.clxs.pojo.Worker;
import java.util.List;
//第三层成员的持久层接口
public interface WorkerDao {
// 根据pid来进行父子查询
List<Worker> SelectByPid(Integer pid);
}
第三层的测试
package com.clxs.dao;
import com.clxs.pojo.Worker;
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 WorkerDaoTest {
@Autowired
private WorkerDao workerDao;
@Test
public void selectByPid() {
List<Worker> all = workerDao.SelectByPid(1);
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.WorksDao">
<sql id="List" >
id,name,introduction,img,pid
</sql>
<select id="SelectByPid" resultType="com.clxs.pojo.Works">
select <include refid="List"/>
from works
where pid =#{pid}
</select>
</mapper>
第四层的接口
package com.clxs.dao;
import com.clxs.pojo.Works;
import java.util.List;
//第四层作品的持久层接口
public interface WorksDao {
// 根据pid来进行父子查询
List<Works> SelectByPid(Integer pid);
}
第四层的测试
package com.clxs.dao;
import com.clxs.pojo.Works;
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 WorksDaoTest {
@Autowired
private WorksDao worksDao;
@Test
public void selectByPid() {
List<Works> all = worksDao.SelectByPid(1);
System.out.println(all);
}
}
第四层的测试结果
综合上诉,问题完全解决,所有的小接口都已经跑通了。然后平均每个的时间都在3秒以内。
其实还可以再快点的,因为的接口和SQL都写的很简单。
怀疑是因为连接池的原因,C3P0是最吃性能的连接池。
现在各个表的各个小接口都已经写完并且跑通了,接下来就是花时间去把它们在业务层组成大接口。
今日学习:
1.测试类是完全独立出去的,需要专门写配置文件上下文去扫描。
2.测试类必须要设置成公共类,以便于访问。(私有类也行,但是要单独写方法接入,麻烦)
3.junit测试类依赖包引用和调用都错了,有重名的,但并不是junit测试。
以后一定要看清楚再调用和引用,下面为正确的。
4.老大专门点了我的学习思想,受益匪浅,这一点一定要单独拿出来说一说,虽然听着很简单哦。
写代码的过程就是做事的过程,仔仔细细,循规蹈矩。
比如我要买水果,那么我就要去水果店,我得先知道水果店在哪里。
那么就相当于,我要调用,那么我就要先知道,我要调用的这个东西,被放在那里。
以此类推,写代码的过程是一个做事的过程,把每个细节都抽调出来仔细研究,避免遗漏。
如果保持着这个思想,那么遇到没见过的问题也不用害怕。
为什么我这里会报错?从哪里开始报错的?一步一步的查看。
这个是什么东西?有什么作用?我要怎么用调用和引用?调用和引用后该怎么实现它的功能?
今后端正学习态度,一步一步仔仔细细的去研究。
但是如果在一个问题上耗费了两个小时还是解决不了,马上找其它师兄,其它师兄还不行就找二大。
也不能在一个问题上一拖再拖,最后浪费时间,吊死在一棵树上。这样也是不对的。
今日问题:
为什么我总是会一些,看着很简单,但是又很难很难解决的“疑难杂症”?就很迷。
同时衣服,裤子,袜子,内裤,又破洞,还要抽时间拿去裁缝店修补,费钱费时,恼火。
明日想法:
2.编写新的业务层接口,也算是先提前写好。
(把多个持久层的表的小接口,通过循环遍历的方式整合成大接口)
2.1.留言表实现获取留言者IP并跟着留言内容一起放入留言表。
(留言表的pid=对应留言作品的id,用来做关联标签)
2.2.调用各表的各接口来循环遍历,实现全表模糊查询。(多个list集合,放到map里。
2.3.调用各表的各接口来循环遍历,实现全表分级查询。(多个list集合,放到map里。
评论