spring boot 使用jpa在pom.xml在上文中已经介绍过。在这里直接介绍各个类文件如何编写:
代码结构:
domain(存放实体类文件);
repository(存放数据库操作文件,相当于dao层)
service(存放逻辑层service文件)
web(存放控制类相当于control层)
如下图:
注意:测试的时候用http工具测试比如postman,浏览器有时候不支持在地址栏上面使用post put这些请求方式
一 保存(insert)方法
1 创建UserInfo实体类,代码如下:
package com.cfj.ceshi.jpa.domain; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="user_info") public class UserInfo implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String userName; private String age; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "UserInfo [id=" + id + ", userName=" + userName + ", age=" + age + "]"; } }
2 创建数据库操作类相当于dao层,主要创建一个接口UserRepository,继承JpaRepository接口即可。如果只是不同的保存方法接口中不用写什么。本文写了一个查询方法,用于查询用,代码如下:
package com.cfj.ceshi.jpa.repository; import org.springframework.data.jpa.repository.JpaRepository; import com.cfj.ceshi.jpa.domain.UserInfo; public interface UserRepository extends JpaRepository<UserInfo, Integer> { UserInfo findByUserName(String userName); }
3 创建service接口和它的实现类,代码如下:
package com.cfj.ceshi.jpa.service; import com.cfj.ceshi.jpa.domain.UserInfo; public interface UserService { public Integer save(UserInfo user); public void delete(Integer id); }
package com.cfj.ceshi.jpa.service.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.cfj.ceshi.jpa.domain.UserInfo; import com.cfj.ceshi.jpa.repository.UserRepository; import com.cfj.ceshi.jpa.service.UserService; @Service @Transactional public class UserServiceImpl implements UserService{ @Autowired private UserRepository userRepository; @Override public Integer save(UserInfo user) { return userRepository.save(user).getId(); } @Override public void delete(Integer id) { userRepository.delete(id); } }
4 创建控制类(controller)在spring boot 里面用web包表示,代码如下:
package com.cfj.ceshi.jpa.web; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.cfj.ceshi.jpa.domain.UserInfo; import com.cfj.ceshi.jpa.service.UserService; @RestController @RequestMapping("/user") public class UserWeb { @Autowired private UserService userService; @RequestMapping("/save") public String save() { /* * 测试最普通的方法 调用http://localhost:8081/user/save * 则想数据库插入一条数据,姓名是张三 年龄是20 */ UserInfo user = new UserInfo(); user.setUserName("张三"); user.setAge("20"); return userService.save(user).toString(); } //以下postOne 和postTwo 方法 主要用于post请求,一般新增方法用post方式 /** * 请使用 postman测试 方式选择post http://localhost:8081/user/save-one * body 中选择form-data 或者x-wwww-form-urlencoded 输入对应键值对 * @param name * @param age * @return */ @PostMapping(value = "/save-one") //相当于@RequestMapping(value = "/save-one", method = RequestMethod.POST) public String postOne(String name,String age) { UserInfo user = new UserInfo(); user.setUserName(name); user.setAge(age); return userService.save(user).toString(); } /** * 请使用 postman测试 方式选择post http://localhost:8081/user/save-one * body 中选择raw 并选择JSON(application/json) 传入json格式 * @param user * @return */ @PostMapping(value = "/save-two") //相当于@RequestMapping(value = "/save-one", method = RequestMethod.POST) public String postTwo(@RequestBody UserInfo user) { return userService.save(user).toString(); } }
5 使用postman工具测试save-one和save-two
- save-one测试如下:
- save-two测试如下:
二 修改(update)方法
1 一般修改方法用put方式提交,在上面的UserWeb类中添加如下代码:
//以下两个方法是put的方式 用于修改数据 /** * 访问http://localhost:8081/user/update-one * body 选择x-wwwww-form-urlenable 输入对应key 和value * @param id * @param name * @param age * @return */ @PutMapping(value = "/update-one")//相当于@RequestMapping(value = "/update-one", method = RequestMethod.PUT) public String putOne(Integer id,String name,String age) { UserInfo user = new UserInfo(); user.setId(id); user.setUserName(name); user.setAge(age); return userService.save(user).toString(); } /** * http://localhost:8081/user/update-two * body 中选择raw 并选择JSON(application/json) 传入json格式 * @param user * @return */ @PutMapping(value = "/update-two")//相当于@RequestMapping(value = "/update-two", method = RequestMethod.PUT) public String putTwo(@RequestBody UserInfo user) { return userService.save(user).toString(); }
2 测试结果:
- update-one测试如下:
- update-two测试如下:
三 删除(delete)方法
在上面的UserWeb类中添加如下代码:
/** * http://localhost:8081/user/update-two * body 中选择raw 并选择JSON(application/json) 传入json格式 * @param user * @return */ @PutMapping(value = "/update-two")//相当于@RequestMapping(value = "/update-two", method = RequestMethod.PUT) public String putTwo(@RequestBody UserInfo user) { return userService.save(user).toString(); } /** * 删除方法 * @param id */ /*@DeleteMapping(value = "/delete") public void delete(Integer id) { userService.delete(id); }*/ /** * 删除方法 postman 中选择 DELETE方式 http://localhost:8081/user/delete/1 * 将删除主键是1的记录 * @param id */ @DeleteMapping(value = "/delete/{id}") public void deleteOne(@PathVariable Integer id) { userService.delete(id); }
本项目码云地址: