mall 项目学习日志-1

学习文档

1.mybatis 配置

1. pom依赖

2.application.yml

在application.yml中添加数据源配置和MyBatis的mapper.xml的路径配置

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: root

mybatis:
  mapper-locations:
    - classpath:mapper/*.xml
    - classpath*:com/**/mapper/*.xml

3.Mybatis generator 配置文件

官方详解
存放位置:resources下

  1. 里导入数据库配置,引号里写的是jdbc.properties相对于resources的路径,使用方法${}
  2. beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号
  3. 指明自动生成注释的类
  4. 需要生成代码的表名。
  5. 可以生成tostring方法和序列化方法
  6. 
    
    
    
        
        
            
            
            
            
            
            
            
    
            
                
                
                
                
            
            
            
                
                
            
            
            
            
            
            
            
            
            

    4.generator类

    存放位置:随便

    public class Generator {
        public static void main(String[] args) throws Exception {
            //MBG 执行过程中的警告信息
            List warnings = new ArrayList();
            //当生成的代码重复时,覆盖原代码
            boolean overwrite = true;
            //读取我们的配置文件 路径相对于resources
            InputStream is = Generator.class.getResourceAsStream("/mapper/generatorConfig.xml");
            ConfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = cp.parseConfiguration(is);
            is.close();
    
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            //创建生成器
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            //执行生成代码
            myBatisGenerator.generate(null);
            //输出警告信息
            for (String warning : warnings) {
                System.out.println(warning);
            }
        }
    }
    

    5.model生成结果

    一个表会有两个文件
    一个实体类
    一个xxxExample
    利用Criteria我们可以在类中根据自己的需求动态生成sql where字句
    用法

    6.坑

    1.使用 mybatis 逆向工程多次生成 mapper 时,需要将原来的mapper删除
    2.分页插件版本过低会有循环依赖,要升级到1.4.1

    5.mybatisplus的代码生成

    1.依赖

    
        com.baomidou
        mybatis-plus-generator
        3.4.1
    
    

    2.配置

    官方文档

    6.初步结构图

    mall 项目学习日志-1_第1张图片

    2.swagger-ui使用

    地址:http://localhost:8080/swagger-ui.htm

    1.版本报错: Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerException
    swagger 2.7.0 不能适配boot 2.6.0及以上
    2.description 过时了,要用tag管理
    使用方法

    使用步骤

    1.依赖
    2.配置文件
    Swagger对生成API文档的范围有三种不同的选择
    生成指定包下面的类的API文档
    生成有指定注解的类的API文档
    生成有指定注解的方法的API文档

    @Configuration
    @EnableSwagger2
    public class Swagger2Config {
        @Bean
        public Docket createRestApi(){
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    //为当前包下controller生成API文档
                    .apis(RequestHandlerSelectors.basePackage("com.macro.mall.tiny.controller"))
                    //为有@Api注解的Controller生成API文档
    //                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                    //为有@ApiOperation注解的方法生成API文档
    //                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                    .paths(PathSelectors.any())
                    .build();
        }
    }
    

    3.为controller层添加注解
    @Api(tags = “PmsBrandController”, description = “商品品牌管理”)

    4.实体类较多的情况下,利用mybatis生成工具 根据 数据库注释 快速生成swagger注解
    CommentGenerator extends DefaultCommentGenerator
    1.实现addJavaFileComment方法,导入包

    @Override
    public void addJavaFileComment(CompilationUnit compilationUnit) {
        super.addJavaFileComment(compilationUnit);
        //只在model中添加swagger注解类的导入
        if(!compilationUnit.isJavaInterface()&&!compilationUnit.getType().getFullyQualifiedName().contains(EXAMPLE_SUFFIX)){
            compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME));
        }
    }
    

    2.在addFieldComment方法里
    field:表示每个字段

    field.addJavaDocLine("@ApiModelProperty(value = \""+remarks+"\")");
    

    3.效果

    @ApiModelProperty(value = "首字母")
    private String firstLetter;
    

    3.redis整合实现验证码功能

    3.1 实现逻辑

    自定义的Redis键值加上手机号生成一个Redis的key,验证码为value存入到Redis中,
    并设置过期时间为自己配置的时间(这里为120s)。

    3.1注意点

    1.从配置文件中导入值

    1.1application定义redis key

    redis:
      key:
        prefix:
          authCode: "portal:authCode:"
        expire:
          authCode: 120 # 验证码超期时间
    

    1.2 注入

    @Value("${redis.key.prefix.authCode}")
    private String REDIS_KEY_PREFIX_AUTH_CODE;
    

    2.StringUtils.isEmpty弃用,用!hasLength代替

    3.stringRedisTemplate工具类的使用

        @Autowired
        private StringRedisTemplate stringRedisTemplate;
        @Override
        public void set(String key, String value) {
    //       opsForValue()召唤操作值对象ValueOperations
            stringRedisTemplate.opsForValue().set(key, value);
    
        }
    

你可能感兴趣的:(学习,java,mysql)