HRM項目的搭建css
咱們開發一個源碼人力系統,讓找工做的人,可以選擇特定機構的課程學習,並參與平臺發佈的招聘,並且還能參與一些活動。 讓招聘單位入駐進來發佈崗位進行招聘,甚至委託培訓機構培訓合適的人才。對於配置機構能夠發佈課程,吸取學員來完成學習並經過收取學費獲取商業價值。html
找工做人前端
招聘的人vue
培訓機構java
系統運營方mysql
後臺管理的前端:elementui+vueweb
門戶網站的前端:div+css(前端)spring
2.後臺技術架構sql
SpringBoot+SpringCloud數據庫
hrm-parent hrm-basic-parent //項目基本模塊 hrm-basic-utils //公共工具模塊 hrm-basic-common //公共代碼模塊 hrm-support-parent //項目支撐服務 hrm-eureka-server-1010 hrm-gateway-zuul-1020 hrm-config-server-1030 hrm-systemmanage-parent hrm-systemmanage-common //針對系統管理服務公共代碼如:domain,query hrm-systemmanage-service-2010 //針對於系統管理的微服務
就是把系統中的一些基礎數據(一些不變的數據項),好比:學校,學歷,單位等等用兩張表來維護,一個類型表,一個明細表 。類表用來描述數據項的類型 , 而明細表用來描述數據項的明細列表。
select i.id,i.title from dir d join item i on i.dir_id = d.id where d.sn = 「xl」
t_systemdictionary
t_systemdictionaryitem
使用MybatisPlus,就不用寫重複代碼,而且還有模板的功能,能夠一鍵生成daomin,query,mapper接口,mapper.xml,service,controller,很是好用。MyBatis-Plus(簡稱 MP)是一個 MyBatis 的加強工具,在 MyBatis 的基礎上只作加強不作改變,爲簡化開發、提升效率而生。
無侵入
損耗小
強大的 CRUD 操做
支持 Lambda 形式調用
支持多種數據庫
支持主鍵自動生成
支持 XML 熱加載
內置代碼生成器
內置分頁插件
內置性能分析插件
內置全局攔截插件
內置 Sql 注入剝離器
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
...
@EnableTransactionManagement //事務管理 @Configuration @MapperScan("cn.itsource.hrm.mapper") //mapper接口的掃描包 public class MybatisPlusConfig { /** * 分頁插件 */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }
eureka: client: serviceUrl: defaultZone: http://localhost:1010/eureka/ #註冊中心地址 instance: prefer-ip-address: true #使用ip地址註冊 instance-id: hrm-systemmanage-service #指定服務的id server: port: 2010 spring: application: name: hrm-systemmanage-service datasource: username: root password: 123456 url: jdbc:mysql:///hrm-systemmanage driver-class-name: com.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource mybatis-plus: mapper-locations: classpath:cn/itsource/hrm/mapper/*Mapper.xml type-aliases-package: cn.itsource.hrm.domain,cn.itsource.hrm.query
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency> <!--模板引擎--> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
#此處爲本項目src所在路徑(代碼生成器輸出路徑),注意必定是當前項目所在的目錄喲 OutputDir=D:/JavaEEIdeaWorkspace/hrm-parent/hrm-systemmanage-parent/hrm-systemmanage-service-2010/src/main/java #mapper.xml SQL映射文件目錄 OutputDirXml=D:/JavaEEIdeaWorkspace/hrm-parent/hrm-systemmanage-parent/hrm-systemmanage-service-2010/src/main/resources #domain的輸出路徑 OutputDirBase=D:/JavaEEIdeaWorkspace/hrm-parent/hrm-systemmanage-parent/hrm-systemmanage-common/src/main/java #設置做者 author=gangge #自定義包路徑 parent=cn.itsource.hrm #數據庫鏈接信息 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql:///hrm-systemmanage jdbc.user=root jdbc.pwd=123456
resources /templates /controller.java.vm
resources /templates /query.java.vm
注意是否須要調整domain的輸出路徑
注意是否須要調整Mapper.xml的輸出路徑
增長controller的輸出生成模板和輸出路徑調整
增長query的輸出生成模板和輸出路徑調整
package cn.itsource.hrm; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.InjectionConfig; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert; import com.baomidou.mybatisplus.generator.config.po.TableInfo; import com.baomidou.mybatisplus.generator.config.rules.DbType; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import java.util.*; /** * 生成代碼的主類 */ public class GenteratorCode { public static void main(String[] args) throws InterruptedException { //用來獲取Mybatis-Plus.properties文件的配置信息 ResourceBundle rb = ResourceBundle.getBundle("mybatiesplus-config"); //不要加後綴 AutoGenerator mpg = new AutoGenerator(); // 全局配置 GlobalConfig gc = new GlobalConfig(); gc.setOutputDir(rb.getString("OutputDir")); gc.setFileOverride(true); gc.setActiveRecord(true);// 開啓 activeRecord 模式 gc.setEnableCache(false);// XML 二級緩存 gc.setBaseResultMap(true);// XML ResultMap gc.setBaseColumnList(false);// XML columList gc.setAuthor(rb.getString("author")); mpg.setGlobalConfig(gc); // 數據源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setDbType(DbType.MYSQL); dsc.setTypeConvert(new MySqlTypeConvert()); dsc.setDriverName(rb.getString("jdbc.driver")); dsc.setUsername(rb.getString("jdbc.user")); dsc.setPassword(rb.getString("jdbc.pwd")); dsc.setUrl(rb.getString("jdbc.url")); mpg.setDataSource(dsc); // 策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setTablePrefix(new String[] { "t_" });// 此處能夠修改成您的表前綴 strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略 strategy.setInclude(new String[]{"t_systemdictionary","t_systemdictionaryitem"}); // 須要生成的表 mpg.setStrategy(strategy); // 包配置 PackageConfig pc = new PackageConfig(); pc.setParent(rb.getString("parent")); pc.setController("web.controller"); pc.setService("service"); pc.setServiceImpl("service.impl"); pc.setEntity("domain"); pc.setMapper("mapper"); mpg.setPackageInfo(pc); // 注入自定義配置,能夠在 VM 中使用 cfg.abc 【可無】 InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { Map<String, Object> map = new HashMap<String, Object>(); map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-rb"); this.setMap(map); } }; List<FileOutConfig> focList = new ArrayList<FileOutConfig>(); //controller的輸出配置 focList.add(new FileOutConfig("/templates/controller.java.vm") { @Override public String outputFile(TableInfo tableInfo) { return rb.getString("OutputDir")+ "/cn/itsource/hrm/web/controller/" + tableInfo.getEntityName() + "Controller.java"; } }); //query的輸出配置 focList.add(new FileOutConfig("/templates/query.java.vm") { @Override public String outputFile(TableInfo tableInfo) { return rb.getString("OutputDirBase")+ "/cn/itsource/hrm/query/" + tableInfo.getEntityName() + "Query.java"; } }); // 調整 domain 生成目錄演示 focList.add(new FileOutConfig("/templates/entity.java.vm") { @Override public String outputFile(TableInfo tableInfo) { return rb.getString("OutputDirBase")+ "/cn/itsource/hrm/domain/" + tableInfo.getEntityName() + ".java"; } }); // 調整 xml 生成目錄演示 focList.add(new FileOutConfig("/templates/mapper.xml.vm") { @Override public String outputFile(TableInfo tableInfo) { return rb.getString("OutputDirXml")+ "/cn/itsource/hrm/mapper/" + tableInfo.getEntityName() + "Mapper.xml"; } }); cfg.setFileOutConfigList(focList); mpg.setCfg(cfg); // 自定義模板配置,能夠 copy 源碼 mybatis-plus/src/main/resources/templates 下面內容修改, // 放置本身項目的 src/main/resources/templates 目錄下, 默認名稱一下能夠不配置,也能夠自定義模板名稱 TemplateConfig tc = new TemplateConfig(); tc.setService("/templates/service.java.vm"); tc.setServiceImpl("/templates/serviceImpl.java.vm"); tc.setMapper("/templates/mapper.java.vm"); tc.setEntity(null); tc.setController(null); tc.setXml(null); // 如上任何一個模塊若是設置 空 OR Null 將不生成該模塊。 mpg.setTemplate(tc); // 執行生成 mpg.execute(); } }
query
util
<!--引入swagger支持--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
@Configuration @EnableSwagger2 //開啓swagger2的支持 public class Swagger2 { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() //對外暴露服務的包,以controller的方式暴露,因此就是controller的包. .apis(RequestHandlerSelectors.basePackage("cn.itsource.hrm.web.config")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("系統管理服務api") .description("系統管理服務接口文檔說明") .contact(new Contact("gangge", "", "gangge@itsource.cn")) .version("1.0") .build(); } }
注意:basePackage要改爲你項目的controller的路徑
<!--引入swagger支持--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
@Component @Primary public class DocumentationConfig implements SwaggerResourcesProvider { @Override public List<SwaggerResource> get() { List resources = new ArrayList<>(); //添加全部的微服務的文檔資源 /** * 參數: * name:自定義的服務的名字 * location:指定是微服務的路徑 /前綴/服務名/v2/api-docs */ resources.add(swaggerResource("系統管理", "/hrm/system/v2/api-docs", "2.0")); return resources; } private SwaggerResource swaggerResource(String name, String location, String version) { SwaggerResource swaggerResource = new SwaggerResource(); swaggerResource.setName(name); swaggerResource.setLocation(location); swaggerResource.setSwaggerVersion(version); return swaggerResource; } }
注意: resources.add .. 要修改爲本身的微服務的配置
@Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("源碼人力資源綜合平臺") .description("源碼人力資源綜合平臺接口文檔說明") .termsOfServiceUrl("http://localhost:1020") .contact(new Contact("gangge", "", "gangge@itsoruce.cn")) .version("1.0") .build(); } }
注意: termsOfServiceUrl 要修改爲網關的地址