发表于: 2019-11-01 20:17:00

1 1022


今日想法:


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里。


返回列表 返回列表
评论

    分享到