springboot调用service层方法报错Invalid bound statement (not found)
好像base-package或@mapperscan扫描包路径范围太大了,你直接把扫描包路径定位到mapper接口文件夹即可
谈谈对spring boot分层中各层的理解
1 Dao层:持久层,主要是和数据库进行交互
dao层首先胡创建dao接口,接着就可以在配置文件中定义该接口的实现类;接着就可以在模块中调用dao的接口进行数据业务的处理,而不用关注此接口的具体实现是哪一个类,dao层的数据源和数据库实在配置文件中进行配置的。
2 Entity层:实体层,数据库在项目中的类
主要用于定义与数据库对象的属性,提供get/set方法,带参和无参的构造方法。
3 Service层:业务层控制业务
业务模块的逻辑应用设计,和DAO层一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联。接下来就可以在service层调用接口进行业务逻辑应用的处理。
好处:封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。
4.Controller层:控制层 控制业务逻辑
具体的业务模块流程的控制,controller层主要调用Service层里面的接口控制具体的业务流程,控制的配置也要在配置文件中进行。
Controller和Service的区别是:Controller负责具体的业务模块流程的控制;Service层负责业务模块的逻辑应用设计
总结:具体的一个项目中有:controller层调用了Service层的方法,Service层调用Dao层的方法,其中调用的参数是使用Entity层进行传递的。
补充:5、View层 此层与控制层结合比较紧密,需要二者结合起来协同工发。View层主要负责前台jsp页面的表示
springboot 写单元测试方法
背景: service层方法,只能通过被control层调用来观察方法是否成功,但是很多时候方法不是一次成功的,不能先写好方法,再到control层调用,所以要先测试下service层的方法是否work,有个简单的方法测试这个方法是否work
用Junit,已经帮你写好test测试类的main方法
操作步骤:
1.选中SERVICE层的方法,右键,选中goto---test,选中一个方法做测试
2.ide会自动生成一个单测的,然后在这自动生成的类里面,下面四个必须
@RunWith(SpringRunner.class) ---必须
@SpringBootTest() ----必须
public class BizApplyUniformServiceImplTest {
@Resource ---必须
private Service的那个类 a;
@Test ----必须
public void getApplyUniformByFlowId() {
a.xxx;----右键debug/run
}
}