SpringBoot web项目中使用jpa操作mysql数据库
我们使用这篇文章所创建的项目:IDEA创建SpringBoot的WEB项目
本项目gitee:https://gitee.com/PingzZ/springboot-jpa
1.pom.xml中添加jpa和mysql依赖
然后idea右下角会有提示,点击Import Changes,如果本地Maven仓库没有这个依赖,会从远端的仓库下载下回来。
快捷复制:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2. 配置数据库连接信息和创建所需的包、类、接口。
创建完成后目录结构如下(其实正常的项目还需要一个service包,不过目前不需要):
我们创建了一个User类,一个UserRepo接口,一个UserController类和在application.properties中添加数据库的连接信息:
User类:
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected Long id;
private String name;
private int age;
//set和get。。。节省空间这里就不写了,自己记得添加上
}
UserRepo接口:
改接口只需要继承JpaRepository<T, ID>,这个接口需要传递两个泛型,第一个是实体类,第二个是实体类属性中注明了@Id的类型。
我们这里的实体类是User,而User属性id属性是Long类型,所以这里是JpaRepository<User,Long>,我们只需要继承JpaRepository<User,Long>接口,我们就已经可以对user表进行简单的CRUD了
public interface UserRepo extends JpaRepository<User,Long>{
}
UserController类:
@RestController
@RequestMapping("user")
public class UserConroller {
@Autowired
private UserRepo userRepo;
//查找所有用户
@RequestMapping(value = "list",method = RequestMethod.GET)
public List<User> getUsers(){
return userRepo.findAll();
}
//添加一个用户
@RequestMapping(value = "add",method = RequestMethod.POST)
public User saveUsers(User user){
return userRepo.save(user);
}
// 根据id查找一个用户
@RequestMapping(value = "/{id}",method = RequestMethod.GET)
public User getUser(@PathVariable("id") Long id){
Optional<User> userOptional =userRepo.findById(id);
return userOptional.get();
}
//更新一个用户信息,userRepo.save方法可以执行添加也可以执行更新,如果需要执行持久化的实体存在主键值则更新数据,如果不存在则添加数据。
@RequestMapping(value = "modify",method = RequestMethod.PUT)
public User updateUser(User user){
return userRepo.save(user);
}
//根据id删除一个用户
@RequestMapping(value = "/{id}",method = RequestMethod.DELETE)
public void deleteUser(@PathVariable("id") Long id){
userRepo.deleteById(id);
}
}
application.properties配置文件添加信息:
数据库名和账号密码根据你自己的情况改变。
#SpringBoot 2.1.3.RELEASE 需要以下配置控制台才会打印api,去掉'#'开启
#logging.level.org.springframework.web=trace
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/bootdemo?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.show-sql=true
因为我配置文件中使用的数据库是:bootdemo,所以需要提前创建好数据库,数据表不需要创建,会自动生成。
3.启动项目,用Postman进行http测试
①先添加几条数据
记得是POST请求,只需要name和age参数,id不用传,会自动生成,保存成功会返回创建成功的对象,返回对象包含了自动创建的id值
我一共创建了3条数据。
②查找所有用户,GET请求
③根据id查找一个用户,GET请求
④修改一个用户信息 。PUT请求
查询所有进行验证
⑤ 根据id删除一个用户,DELETE请求
查询所有进行验证,id为3的用户已删除。