springboot项目package结构就这么几块,套路是固定的。
controller里处理api的url对应的业务逻辑,如果无需访问数据库就直接返回数据;如果需要访问数据库,可以利用注入的service对象操作数据库。
dao里面放的是interface,访问数据库取数的interface类。有些项目结构不用dao用mapper,功能是一样的。与之一一对应的是resources\mapper里的xml文件,是一一对应。
resource\mapper里的xml文件是和dao里的interface一一对因的,可以理解为mybatis通过扫码这个xml来实例化dao,因为这个dao里的interface没有实现类,而在service里却可以直接注入对象。
为什么把数据库访问设计成dao+mapper,而不是dao+实现(service目录就是interface+实现),或者直接写dao实现类。
1,采用dao接口是为了解耦数据库;
2,采用mapper是因为mapper方式更加灵活强大,可以用动态sql实现更加灵活的api接口功能
domain目录,有些地方写modal或pojo,功能都是放简单类,这些类可以和数据库表对应,也可以不对应,具体对应和使用就是通过mapper里的xml文件
service目录下有interface类和对因的实现,在这里注入dao对象进行数据库操作。这里的函数可以和dao里的函数一一对应的。
这里可能有个疑惑,为什么controller不直接注入dao对象进行数据库访问呢?还是因为解耦的考虑
同样这个service目录用interface+实现类,而不是直接写实现类,也是为了不同层次之间的解耦。
Application.java是启动类
所以spingboot开发api的话就按这几个目录做相应的代码就行了。

网上也有个图,因为我们是后端只做api,所以没有view这个目录

下面是具体交互流程的示意图

采用Mybatis的好处主要有这几点:
提供数据库连接池
提供缓存
支持了动态sql
网友评论