• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

springboot 多模块将dao(mybatis)项目拆分出去

springboot 搞代码 4年前 (2022-01-05) 66次浏览 已收录 0个评论

这篇文章主要介绍了springboot 多模块将dao(mybatis)项目拆分出去,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

前言:

以前我们在建项目的时候, 要么将所有的package建在一个项目里面, 在处理引用的时候, 真的很方便. 不用担心, 有些东西配置不到或者读取不到.

或者, 将package独立出去, 到一个项目中或者子项目中. 这时候, 项目中的引用处理, 还是有些麻烦的. 不过好处更多, 不再表述.

在 idea 里面, 推荐使用 多模块 建项目, 而不再是 eclipse 里面的那种方式. 那这里, 就试着将一个springboot 的项目拆分到子模块中去, 看看效果如何.

项目拆分:

1. 目录变化

2. 父项目

父pom.xml理论上来说, 应该是对子项目中的引用进行一个约束, 主要是版本约束.

所以父 pom.xm 中, 应该使用dependencyManagement 来约束 子项目中 jar 包版本.

然后对于一些子项目都用得着的引用, 可以提到 父项目中去.

   4.0.0cn.elvinleparent0.0.1-SNAPSHOTpomparentDemo project for Spring Boot org.springframework.bootspring-boot-starter-parent1.5.9.RELEASE<!-- lookup parent from repository --> pojowebdaoservicesimpl UTF-8UTF-81.81.1.31.3.15.1.44   com.alibabadruid${druid.version} org.mybatis.spring.bootmybatis-spring-boot-starter${mybatis.boot.starter.version} mysqlmysql-connector-java${mysql.connector.java.version}<!--申明依赖关系-->  org.springframework.bootspring-boot-starter-web org.springframework.bootspring-boot-starter-test   org.springframework.bootspring-boot-maven-plugin

3. 子项目 – pojo

3.1 pom.xml

   4.0.0 cn.elvinleparent0.0.1-SNAPSHOTcn.elvinlepojo0.0.1-SNAPSHOTjarpojoDemo project for Spring Boot UTF-8UTF-81.8   org.springframework.bootspring-boot-maven-plugin

3.2 db实体

 package cn.elvinle.pojo; /** * @author: elvin */ public class User { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

对于pojo和dao中的内容, 可以使用mybatis逆向工程生成, 可以省去很多麻烦.

4. 子项目 – dao

4.1 pom.xml

   4.0.0 cn.elvinleparent0.0.1-SNAPSHOTcn.elvinledao0.0.1-SNAPSHOTjardaoDemo project for Spring Boot UTF-8UTF-81.8 <!-- 内部引用 --> cn.elvinlepojo0.0.1-SNAPSHOT<!-- 外部引用 --><!-- https://mvnrepository.com/artifact/com.alibaba/druid --> com.alibabadruid mysqlmysql-connector-java org.mybatis.spring.bootmybatis-spring-boot-starter   org.springframework.bootspring-boot-maven-plugin

4.2 mapper

UserMapper.java:

 public interface UserMapper { public List getAll(); }

UserMapper.xml:

    select * from user 

5. 子项目 – service

5.1 pom.xml

   4.0.0 cn.elvinleparent0.0.1-SNAPSHOTcn.elvinleservice0.0.1-SNAPSHOTjarserviceDemo project for Spring Boot UTF-8UTF-81.8  cn.elvinlepojo0.0.1-SNAPSHOT   org.springframework.bootspring-boot-maven-plugin

5.2 UserService.java

 public interface UserService { public List getAll(); }

6. 子项目 – simpl

6.1 pom.xml

   4.0.0 cn.elvinleparent0.0.1-SNAPSHOTcn.elvinlesimpl0.0.1-SNAPSHOTjarsimplDemo project for Spring Boot UTF-8UTF-81.8  cn.elvinlepojo0.0.1-SNAPSHOT cn.elvinleservice0.0.1-SNAPSHOT cn.elvinledao0.0.1-SNAPSHOT <strong style="color:transparent">来源gao@daima#com搞(%代@#码@网</strong>  org.springframework.bootspring-boot-maven-plugin

6.2 UserSImpl

 @Service public class UserSImpl implements UserService { @Autowired private UserMapper userMapper; @Override public List getAll() { System.out.println("UserSImpl getAll"); return userMapper.getAll(); } }

7. 子项目 – web

关键的地方来了.

7.1 pom.xml

   4.0.0 cn.elvinleparent0.0.1-SNAPSHOTcn.elvinleweb0.0.1-SNAPSHOTjarwebDemo project for Spring Boot UTF-8UTF-81.8  cn.elvinlesimpl0.0.1-SNAPSHOT   org.springframework.bootspring-boot-maven-plugin

7.2 application.yml

 server: context-path: /parent port: 8080 mybatis: config-location: /mapper/*.xml spring: datasource: username: root password: root url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf-8 driver-class-name: com.mysql.jdbc.Driver

7.3 控制器

 @RestController @RequestMapping("api") public class ApiController { @Autowired private UserService userService; @RequestMapping("index") public List index(){ List all = userService.getAll(); return all; } }

到目前为止, 没什么特别的, 都是正常修改, 接下来, 会出现与不分模块不同的地方.

7.4 入口处修改

 @ComponentScan({"cn.elvinle"}) @SpringBootApplication public class WebApplication { public static void main(String[] args) { SpringApplication.run(WebApplication.class, args); } }

这时候, 如果直接运行起程序, 是不会成功访问的. 原因在于, mybatis的自动化配置和自动化创建, 没有支持到多模块中.

这时候, 需要我们手动进行配置和创建.

7.5 Mybatis java 配置

 <!-- mybatis 的工厂 --> <!-- 自动扫描mapping.xml文件 --><!----><!-- DAO接口所在包名,Spring会自动查找其下的类 --> 

可以对照着上面的配置文件, 进行java配置

MybatisConfig:

 @Configuration public class MybatisConfig { @Value("${mybatis.config-location}") private String mapperLocationPattern; @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSource(){return new com.alibaba.druid.pool.DruidDataSource(); } @Bean(name="sqlSessionFactory") public SqlSessionFactory sqlSessionFactory() throws Exception{ SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource()); PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); sqlSessionFactoryBean.setMapperLocations(resolver.getResources(mapperLocationPattern)); return sqlSessionFactoryBean.getObject(); } }

MybatisMapperScannerConfig:

 @Configuration @AutoConfigureAfter(MybatisConfig.class) @MapperScan("cn.elvinle.dao.mapper") public class MybatisMapperScannerConfig { public MapperScannerConfigurer mapperScannerConfigurer(){ MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory"); mapperScannerConfigurer.setBasePackage("cn.elvinle.dao.mapper"); return mapperScannerConfigurer; } }

OK, 到这里, 就可以把程序跑起来了, 看一下结果:

以上就是springboot 多模块将dao(mybatis)项目拆分出去的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:springboot 多模块将dao(mybatis)项目拆分出去

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址