Spring-Data-JPA
JPA定义了一系列对象持久化的标准,也就是一种文本规范
新建一个类用来建立数据库的表的时候使用
@Entity这个注解,表示这个类适合数据库有关的类
这个注解来自Spring-Data-JPA
@Id
@GeneratedValue
这两个注解实现的是一个自增的Id,就是将ID++;
那怎么来操作数据库:
首先在yml文件中的操作:
ddl-auto: update和ddl-auto: create的区别就是使用update数据库表的内容不会发生,只会更新,然后是create是重新新建一个表,当你的表存在时会先删除然后新建
建立完之后没有任何变化
然后新建一个类,用来操作数据库
代码如下:
package com.wilson.demo; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class dbFirstSpringBootDemo { @Id @GeneratedValue private Integer Length; private String Word; private String Type; public dbFirstSpringBootDemo(){ } public Integer getLength() { return Length; } public String getWord() { return Word; } public String getType() { return Type; } public void setLength(Integer length) { Length = length; } public void setWord(String word) { Word = word; } public void setType(String type) { Type = type; } }
主要是注解的使用,新建完成之后就完成了数据库中表的内容的建立,会出现三个新的项:
Length
;
Word
;
Type
;
然后在数据库中将填写内容,之后
新建一个类,这个类就是沟通数据库的
package com.wilson.demo; import org.springframework.data.jpa.repository.JpaRepository; public interface textRepository extends JpaRepository<dbFirstSpringBootDemo, Integer>{ }
然后再建一个类
package com.wilson.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController public class textController { @Autowired private textRepository tController; /** * 查询数据库列表 * @return */ @GetMapping(value = "/words") public List<dbFirstSpringBootDemo> wordsList(){ return tController.findAll(); }
这个类就把数据库中的数据传递了
//查询一个单词 @GetMapping(value = "/words/{Length}") public dbFirstSpringBootDemo WordFindOne(@PathVariable("Length") Integer Length){ return tController.findById(Length).get(); } //更新 @PutMapping(value = "/words/{Length}") public dbFirstSpringBootDemo WordUpdate(@PathVariable("Length") Integer Length, @RequestParam("Type") String Type, @RequestParam("Word") String Word){ dbFirstSpringBootDemo dbFSBDemo = new dbFirstSpringBootDemo(); dbFSBDemo.setLength(Length); dbFSBDemo.setType(Type); dbFSBDemo.setWord(Word); return tController.save(dbFSBDemo); } //根据长度删除一个单词 @DeleteMapping(value = "/words/{Length}") public void deleteWord(@PathVariable("Length") Integer Length){ tController.deleteById(Length); }
这些就是照葫芦画瓢,实现数据库的跟新,查找,删除
使用事物可以在同时操作多条数据的时候实现某些功能
例如:
package com.wilson.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.transaction.Transactional; @Service public class textService{ @Autowired private textRepository ttController; @Transactional //实现的是当dbFSBD1或者dbFSBD2不符合数据库的插入规则的时候,两条数据都不能插入 public void insetTwo(){ dbFirstSpringBootDemo dbFSBD1 = new dbFirstSpringBootDemo(); dbFSBD1.setWord("Qwer"); dbFSBD1.setType("Q"); ttController.save(dbFSBD1); dbFirstSpringBootDemo dbFSBD2 = new dbFirstSpringBootDemo(); dbFSBD2.setWord("Aqwer"); dbFSBD2.setType("A"); ttController.save(dbFSBD2); } }