栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【项目】小帽学堂(二)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【项目】小帽学堂(二)

小帽学堂 三、前后端分离开发

四、搭建项目环境 1. 数据库设计
  • 数据库 edu_teacher
2. 数据库设计规约

1、库名与应用名称尽量一致

2、表名、字段名必须使用小写字母或数字,禁止出现数字开头,

3、表名不使用复数名词

4、表的命名最好是加上“业务名称_表的作用”。如,edu_teacher

5、表必备三字段:id, gmt_create, gmt_modified

说明:

其中 id 必为主键,类型为 bigint unsigned、单表时自增、步长为 1。

(如果使用分库分表集群部署,则id类型为verchar,非自增,业务中使用分布式id生成器)

gmt_create, gmt_modified 的类型均为 datetime 类型,前者现在时表示主动创建,后者过去分词表示被 动更新。

6、单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。 说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。

7、表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint (1 表示是,0 表示否)。

说明:任何字段如果为非负数,必须是 unsigned。

注意:POJO 类中的任何布尔类型的变量,都不要加 is 前缀。数据库表示是与否的值,使用 tinyint 类型,坚持 is_xxx 的 命名方式是为了明确其取值含义与取值范围。

正例:表达逻辑删除的字段名 is_deleted,1 表示删除,0 表示未删除。

8、小数类型为 decimal,禁止使用 float 和 double。 说明:float 和 double 在存储的时候,存在精度损失的问题,很可能在值的比较时,得到不 正确的结果。如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数分开存储。

9、如果存储的字符串长度几乎相等,使用 char 定长字符串类型。

10、varchar 是可变长字符串,不预先分配存储空间,长度不要超过 5000,如果存储长度大于此值,定义字段类型为 text,独立出来一张表,用主键来对应,避免影响其它字段索 引效率。

11、唯一索引名为 uk_字段名;普通索引名则为 idx_字段名。

说明:uk_ 即 unique key;idx_ 即 index 的简称

12、不得使用外键与级联,一切外键概念必须在应用层解决。外键与级联更新适用于单机低并发,不适合分布式、高并发集群;级联更新是强阻塞,存在数据库更新风暴的风险;外键影响数据库的插入速度。

3. 创建项目结构

4. 搭建项目工程(父工程)
  • 创建父工程
    • 创建sprigboot工程school-parent
    • 配置:
      • groupId:com.alex
      • artifactId:school-parent
    • 一直下一步到完成
  • 删除 src 目录
  • 配置 pom.xml
    • 节点后面添加 pom类型
guli-parent
pom
  • 在pom.xml中添加依赖的版本
    • 删除pom.xml中的内容
    • 添加 确定依赖的版本

        1.8
        0.0.1-SNAPSHOT
        3.0.5
        2.0
        2.7.0
        2.8.3
        2.10.1
        3.17
        1.3.1
        2.6
        4.5.1
        0.7.0
        4.3.3
        3.1.0
        2.15.2
        1.4.11
        1.4.11
        1.2.28
        2.8.2
        20170516
        1.7
        1.1.0
        zx
        0.2.2.RELEASE

  • 配置 锁定依赖的版本


        

            

            

                org.springframework.cloud

                spring-cloud-dependencies

                Hoxton.RELEASE

                pom

                import

            


            

                org.springframework.cloud

                spring-cloud-alibaba-dependencies

                ${cloud-alibaba.version}

                pom

                import

            

            

            

                com.baomidou

                mybatis-plus-boot-starter

                ${mybatis-plus.version}

            


            

            

                org.apache.velocity

                velocity-engine-core

                ${velocity.version}

            


            

            

                io.springfox

                springfox-swagger

                ${swagger.version}

            

            

            

                io.springfox

                springfox-swagger-ui

                ${swagger.version}

            


            

            

                com.aliyun.oss

                aliyun-sdk-oss

                ${aliyun.oss.version}

            


            

            

                joda-time

                joda-time

                ${jodatime.version}

            


            

            

                org.apache.poi

                poi

                ${poi.version}

            

            

            

                org.apache.poi

                poi-ooxml

                ${poi.version}

            


            

            

                commons-fileupload

                commons-fileupload

                ${commons-fileupload.version}

            


            

            

                commons-io

                commons-io

                ${commons-io.version}

            


            

            

                org.apache.httpcomponents

                httpclient

                ${httpclient.version}

            


            

                com.google.code.gson

                gson

                ${gson.version}

            


            

            

                io.jsonwebtoken

                jjwt

                ${jwt.version}

            


            

            

                com.aliyun

                aliyun-java-sdk-core

                ${aliyun-java-sdk-core.version}

            

            

                com.aliyun.oss

                aliyun-sdk-oss

                ${aliyun-sdk-oss.version}

            

            

                com.aliyun

                aliyun-java-sdk-vod

                ${aliyun-java-sdk-vod.version}

            

            

                com.aliyun

                aliyun-java-vod-upload

                ${aliyun-java-vod-upload.version}

            

            

                com.aliyun

                aliyun-sdk-vod-upload

                ${aliyun-sdk-vod-upload.version}

            

            

                com.alibaba

                fastjson

                ${fastjson.version}

            

            

                org.json

                json

                ${json.version}

            


            

                commons-dbutils

                commons-dbutils

                ${commons-dbutils.version}

            


            

                com.alibaba.otter

                canal.client

                ${canal.client.version}

            

        

    
5. 搭建项目工程(service模块)
  • 在父工程school-parent下面创建模块service
  • 输入模块名称 service,下一步完成创建
  • 添加模块类型是pom
    • 节点后面添加 pom类型
guli-parent
pom 
  • 添加项目需要的依赖











        




















        










        

            org.springframework.boot

            spring-boot-starter-web

        


        

        

            com.baomidou

            mybatis-plus-boot-starter

        


        

        

            mysql

            mysql-connector-java

        


        

        

            org.apache.velocity

            velocity-engine-core

        


        









        

            io.springfox

            springfox-swagger-ui

        


        

        

            org.projectlombok

            lombok

        


        

        

            org.apache.poi

            poi

        


        

            org.apache.poi

            poi-ooxml

        


        

            commons-fileupload

            commons-fileupload

        


        

        

            org.apache.httpcomponents

            httpclient

        

        

        

            commons-io

            commons-io

        

        

        

            com.google.code.gson

            gson

        


        

            junit

            junit

            4.12

        

    
  • 搭建service-edu模块
    • 在父工程service模块下面创建子模块service-edu
    • 输入模块名称 service-edu,下一步完成创建
6. 搭建项目工程(代码生成器)
  • 讲师管理模块配置
    • 在service下面service-edu模块中创建配置文件
    • resources目录下创建文件 application.properties
# 服务端口
server.port=8001
# 服务名
spring.application.name=service-edu
# 环境设置:dev、test、prod
spring.profiles.active=dev
# mysql数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/school?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=alex
#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
  • 创建MP代码生成器
    • 在test/java目录下创建包com.atguigu.eduservice,创建代码生成器:CodeGenerator.java
package com.alex.demo;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;


public class CodeGenerator {

    @Test
    public void run() {

        // 1、创建代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // 2、全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir("D:\Alex\Info\Project\school_parent\service\service_edu" + "/src/main/java");
        gc.setAuthor("testjava");
        gc.setOpen(false); //生成后是否打开资源管理器
        gc.setFileOverride(false); //重新生成时文件是否覆盖
        gc.setServiceName("%sService");	//去掉Service接口的首字母I
        gc.setIdType(IdType.ID_WORKER); //主键策略
        gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
        gc.setSwagger2(true);//开启Swagger2模式

        mpg.setGlobalConfig(gc);

        // 3、数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/school?serverTimezone=GMT%2B8");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("alex");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

        // 4、包配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName("eduservice"); //模块名
        // 包 com.alex.eduservice
        pc.setParent("com.alex");
        pc.setController("controller");
        pc.setEntity("entity");
        pc.setService("service");
        pc.setMapper("mapper");
        mpg.setPackageInfo(pc);

        // 5、策略配置
        StrategyConfig strategy = new StrategyConfig();

        strategy.setInclude("edu_teacher");

        strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
        strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀

        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
        strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作

        strategy.setRestControllerStyle(true); //restful api风格控制器
        strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符

        mpg.setStrategy(strategy);


        // 6、执行
        mpg.execute();
    }
}

7. 编写后台管理api接口
  • @RestController
    • @Controller :交给Spring管理创建对象
    • @ResponseBody:返回一个JSON数据
  • @RequestMapping("/eduservice/teacher") :访问路径
  • @GetMapping:表示用get提交
  • 编写controller代码
@Autowired
private EduTeacherService eduTeacherService;
@GetMapping("findAll")
    public List findAllTeacher() {
        // 调用service的方法实现查询所有的操作
        List list = eduTeacherService.list(null);
        return list;
    }
  • 创建SpringBoot配置类
    • 在edu包下创建config包,创建MyBatisPlusConfig.java
package com.alex.eduservice.config;
@Configuration
@EnableTransactionManagement
@MapperScan("com.alex.eduservice.mapper")
public class MyBatisPlusConfig {
}
  • 配置SQL执行性能分析插件

@Bean
@Profile({"dev","test"})// 设置 dev test 环境开启
public PerformanceInterceptor performanceInterceptor() {
    PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
    performanceInterceptor.setMaxTime(1000);//ms,超过此处设置的ms则sql不执行
    performanceInterceptor.setFormat(true);
    return performanceInterceptor;
}
  • 创建SpringBoot启动类
    • 创建启动类 EduApplication.java,注意启动类的创建位置
@SpringBootApplication
public class EduApplication {
    public static void main(String[] args) {
        SpringApplication.run(EduApplication.class, args);
    }
}
  • 运行启动类
    • 访问http://localhost:8001/eduservice/teacher/findAll 得到json数据
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/666846.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号