0
点赞
收藏
分享

微信扫一扫

SpringBoot2快速入门05--jpa

扒皮狼 2021-09-24 阅读 55

本节我们学习使用Jpa,jpa其实是一个规范,在出来之前,都是使用hibernate,hibernate可以使程序员以面向对象的方式操作数据库,我还是喜欢native sql。

先导入相关包,如下:

compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('mysql:mysql-connector-java')

配置数据库连接,修改application-dev.yml,如下:

spring:
datasource:
url: jdbc:mysql://localhost:3306/xfdb?useUnicode=true&characterEncoding=UTF-8
password: root
username: root

配置实体,配置实体与表的关联,是否字段映射,ID生成器等,如下:

@Entity(name = "t_user")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long id;
private String name;
private Integer age;
@Transient
private String email;

首先,使用@Entity(name = "t_user")指定实体映射的表名,ID生成方式IDENTITY为由底层数据库生成标识,@Transient指定当前字段不映射到数据库。

接着写db操作类repository,其实这里是一个interface,如下:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
/**
* 自定义
*/

List<User> findAllByName(String name);
}

我们继承JpaRepository,就已经有了增删改查的方法了,无需我们再加,但可以加其它的方法,如上面的findAllByName。
这里是根据方法名生成sql,如select u from User u where u.name=?,深入学习可以查看官方文档。

接着编写controller实现增删改查,注入repository,如下:

@RestController
@RequestMapping("/user")
public class SpringJpaController {

@Autowired
private UserRepository repository;

查询用户

@GetMapping
public List<User> queryUsers() {
// 查询所有用户
return repository.findAll();
}

根据id查询用户

@GetMapping("/{id}")
public Optional<User> getUser(@PathVariable Long id) {
// 根据主键ID查询
User u = new User();
u.setId(id);
return repository.findOne(Example.of(u));
}

这里使用了Optional,这是java8引入的,当一个值可能是不存在的时候,就需要用到可选类型(optionals)。

删除用户

@DeleteMapping("/{id}")
public void delUser(@PathVariable Long id) {
// 根据主键ID删除用户信息
repository.deleteById(id);
}

添加用户

@PostMapping
public User addUser(@RequestBody User user) {
// 添加用户
return repository.save(user);
}

更新用户

@PutMapping("/{id}")
public User editUser(@PathVariable Long id, @RequestBody User user) {
// 根据主键ID修改用户信息
user.setId(id);
return repository.save(user);
}

注意,更新实体一定要用id,否则会当作保存。
学习交流,请加群:64691032

举报

相关推荐

0 条评论