学了段时间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
目前我作为一个菜鸟还在学习中,以后发现问题继续做笔记