需要在pom.xml中添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
1、首先在本地创建一个数据库dbgirl。
配置文件中增加数据库配置:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/dbgirl
username: root
password: wangyinpeng
jpa:
hibernate:
ddl-auto: update
show-sql: true
2、创建对象Girl
package com.hytxwz.girl;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity //表示该类对应数据库中的某个表
public class Girl {
@Id
@GeneratedValue //自增
private Integer id;
private String cupSize;
private Integer age;
public Girl() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCupSize() {
return cupSize;
}
public void setCupSize(String cupSize) {
this.cupSize = cupSize;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public void setAge() {
}
}
注意用到的三个新的注解:
@Entity //表示该类对应数据库中的某个表
@Id
@GeneratedValue //自增
此时运行程序看到数据库中出现girl表
3、数据库的常用操作:
数据库的增删改查通过controller类中的方法来实现;
首先新建一个GirlRepository接口继承JpaRespository<Girl, Integer(id类型)>;
然后在controller中调用GirlRepository中的方法即可实现对数据库的增删改查。
GirlRepository :
package com.hytxwz.girl;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("girlRepository")
public interface GirlRepository extends JpaRepository<Girl, Integer> {
//通过其他字段查询对象(手动增加的方法)
List<Girl> findGirlsByAge(Integer age); //注意方法名格式 by+属性
}
GirlController:
package com.hytxwz.girl;
import com.mysql.fabric.xmlrpc.base.Param;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
public class GirlController {
@Resource(name = "girlRepository")
private GirlRepository girlRepository;
@GetMapping(value = "/girls") //访问girls路径得到女生列表
public List<Girl> girlList(){
return girlRepository.findAll();
}
@GetMapping(value = "/newGirl") //访问时新增对象
public Girl addGirl(@RequestParam("cupSize") String cupSize,
@RequestParam("age") Integer age){
Girl girl = new Girl();
girl.setCupSize(cupSize);
girl.setAge(age);
return girlRepository.save(girl);
}
@GetMapping(value = "/delGirl/{id}") //访问时删除对象
public void delGirl(@PathVariable("id") Integer id){
girlRepository.deleteById(id);
}
@GetMapping(value = "/findGirl/{id}") //访问时查询对象
public Girl findGirlById(@PathVariable("id") Integer id){
return girlRepository.findById(id).get();
}
@GetMapping(value = "/updGirl/{id}") //访问时更新对象
public Girl updateGirl(@PathVariable("id") Integer id,
@RequestParam("cupSize") String cupSize,
@RequestParam("age") Integer age){
Girl girl = girlRepository.findById(id).get();
girl.setCupSize(cupSize);
girl.setAge(age);
return girlRepository.save(girl);
}
@GetMapping(value = "/findGirlsByAge/{age}") //通过其他字段查询对象
public List<Girl> findGirlsByAge(@PathVariable("age") Integer age){
return girlRepository.findGirlsByAge(age);
}
}
4、开启事务使用注解@Transactional
//测试事务
@Transactional
public void addTwo(){
Girl g1 = new Girl();
g1.setAge(16);
g1.setCupSize("B");
girlRepository.save(g1);
Girl g2 = new Girl();
g2.setAge(18);
g2.setCupSize("C");
// int i = 1/0;
girlRepository.save(g2);
}
5、简单的表单验证@Valid
@Min/@Max中value属性为最大最小值,message属性是错误提示信息。
@Valid放在需要验证的属性前面,BindingResult对象中保存验证结果。