• springBoot中碰见的问题


    学了段时间java后,想找一框架去学习,听说spring boot比较好,就学习学习,结果碰见一系列问题

    1在配置数据库时看准文件如果在application.properties文件中写配置是

    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db_test?useUnicode=true&characterEncoding=UTF-8
    spring.datasource.username=root
    spring.datasource.password=123
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
    spring.jpa.hibernate.ddl-auto=update
    spring.jpa.show-sql=true

    如果在application.yml中写

    (重要的事说三次 

      例如 

    port: 8082  

    这个中间是有空格的!
    这个中间是有空格的!
    这个中间是有空格的! )
    server:
      port: 8082
      servlet.context-path: /bucket
    spring:
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/bucketSpring?useUnicode=true&characterEncoding=UTF-8
        username: root
        password: 123
      jpa:
        hibernate:
          ddl-auto: update
        show-sql: true

    2配置中

      

    ddl-auto: update

        这个值有五个,建议使用update这样每次运行都是更新表,如果选择create,每次运行项目会重新创建表,当然你表中数据也一起删除,如果数据重要,你就准备跑路吧

    3有关事务的问题

    在加了注释@Transactional后发现插入两条数据后没发生事务回滚
    这是因为如果用的是springBoot2.0的话需要改下引擎。
    把表引擎改成InnoDB
    或者在配置中加入
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
      #不加这句则默认为myisam引擎

    4数据库操作问题

      使用findOne()方法后发现报错

      Spring Boot 2.0版本将findByID()替代了findOne();并且返回的也不再是实体类的类型。而是Optional类型

        @GetMapping(value = "selectIdTest")
        public Optional selectIdTest(
                @RequestParam(value = "id",required = true) Integer id
        ){
            return testRepository.findById(id);
        }

    5用springboot创建表不能自己创建也不报错

    因为创建的实体类的包和启动类的包名不同

    比如

    BucketApplication .java文件中包名是  com.zhu.app;

    package com.zhu.app;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    @SpringBootApplication
    public class BucketApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(BucketApplication.class, args);
        }
    }

    而在实体类中包名是  com.zhu.obj;

    package com.zhu.obj;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    @Entity
    public class CollectionObj {
        @Id
        @GeneratedValue
        private Integer collectionId;
    }

    这样就扫描不到实体类,所有创建不了

    我的解决办法

    把实体类的包移动到 com.zhu.app 中  于是我的实体类包名是  com.zhu.app.obj;

    ider编辑器的两个快捷键

    ALT+Enter导入包
    
    在编辑框中右击,选择generator,可以拖选住你想要生成get、set方法的属性,点击完成即可自动生成get和set方法。快捷键为:alt+insert

    目前我作为一个菜鸟还在学习中,以后发现问题继续做笔记

  • 相关阅读:
    php 下载文件
    thinkphp3.1 发送email
    微擎 plugin 时间插件 图片上传插件不显示 报错 影响下面执行
    Java中基本数据类型的对比记忆
    堆内存设置以及垃圾回收方式
    try--catch--finally中return返回值执行的顺序(区别)
    Java中的值传递和引用传递
    全面总结sizeof的用法(定义、语法、指针变量、数组、结构体、类、联合体、位域位段)
    10进制转换成16进制最简单的方法
    quartz 框架定时任务,使用spring @Scheduled注解执行定时任务
  • 原文地址:https://www.cnblogs.com/zhuyupingit/p/9561890.html
Copyright © 2020-2023  润新知