使用Spring-Data-JPA组件操作数据库。 JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等。 Spring-Data-JPA是Spring对Hibernate的整合。
配置文件加数据库配置:
spring: profiles: active: dev datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/dbgirl username: root password: 123456 jpa: hibernate: ddl-auto: create show-sql: true建立数据库对应的一个类,这里是Girl的bean,
@Entity public class Girl { @Id @GeneratedValue private Integer id; //表示主键,并且自增 private String cupSize; private Integer age; private String content; 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 String getContent() { return content; } public void setContent(String content) { this.content = content; } }接着建好mysql数据库dbgirl,然后ide点击运行。运行后用Navicat查看dbgir数据库,发现girl表已经建好了。 这里其实配置文件中设置了每次运行都先删除再创建表:
jpa: hibernate: ddl-auto: create show-sql: trueddl-auto: update则不会重新创建。
1、新建Girl的bean,上面已经做过了。 2、新建一个接口GirlRepository继承自JpaRepository
public interface GirlRepository extends JpaRepository<Girl,Integer>{} //Girl为数据库表对应的实体,Integer代表主键3、增加url映射方法
@Autowired private GirlRepository girlRepository; /** * 获取所有的女生 * @return */ @GetMapping(value = "/girls") public List<Girl> girlList(){ return girlRepository.findAll(); }over,直接运行。仅仅只要三步,多么的简单啊。
如果要根据age也就是年龄来查找,则
public interface GirlRepository extends JpaRepository<Girl,Integer>{ //通过年龄来查询,这里会查找findByAge中by后的age是否在Girl中有,没有则会报错 //参考链接http://blog.csdn.net/pengdingxu10/article/details/72674900 public List<Girl> findByAge(Integer age); } GirlController中 /** * 根据年龄查询 * @param age * @return */ @GetMapping(value = "/girls/age/{age}") public List<Girl> girlListByAge(@PathVariable("age") Integer age){ return girlRepository.findByAge(age); }只查找一条记录,用findOne。
/** * 查询一个女生 * @param id * @return */ @GetMapping(value = "/girls/{id}") public Girl girlFindOne(@PathVariable("id") Integer id){ return girlRepository.findOne(id); }根据id更新一个女生
/** * 更新 * @param id * @param cupSize * @param age * @param content * @return */ @PutMapping(value = "/girls/{id}") public Girl girlUpdate(@PathVariable("id") Integer id, @RequestParam("cupSize") String cupSize, @RequestParam("age") Integer age, @RequestParam("content") String content){ Girl girl = new Girl(); girl.setId(id); girl.setCupSize(cupSize); girl.setAge(age); girl.setContent(content); return girlRepository.save(girl);//返回保存的girl }根据id删除一条记录
/** * 删除 * @param id */ @DeleteMapping(value = "/girls/{id}") public void girlDelete(@PathVariable("id") Integer id){ girlRepository.delete(id); }使用@Transactional
@Service public class GirlService { @Autowired private GirlRepository girlRepository; @Transactional public void insertTwo(){ Girl girlA = new Girl(); girlA.setCupSize("B"); girlA.setAge(22); girlA.setContent("古灵精怪"); girlRepository.save(girlA); Girl girlB = new Girl(); girlB.setCupSize("F"); girlB.setAge(16); girlB.setContent("人小鬼大"); girlRepository.save(girlB); } }保存女生一条数据发现在mysql中中文是?号,参考以下链接解决 Spring Boot下Mysql数据库的中文乱码问题分析 mysql如何更改character-set-server默认为latin1 window下重启mysql 启动:输入 net stop mysql 停止:输入 net start mysql
Spring Boot基础
