💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
下面通过简单的CURD(增/改/查/删)操作来演示一个JPA的使用过程。 <br/> 步骤如下: **1. 创建实体类** ```java @Entity //声明实体 @Table(name = "user") //实体与表建立映射关系,name就是表名 @Data @Builder @NoArgsConstructor @AllArgsConstructor public class User { /** * @Id:主键。 * strategy:主键生成策略。GenerationType.IDENTITY使用数据库的生成策略,如果是mysql就是自增键。 */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; /** * @Column:属性与表字段建立映射关系。 name就是表的字段名 */ @Column(name = "username") private String username; @Column(name = "password") private String password; @Column(name = "email") private String email; } ``` **2. 创建查询接口** ```java /** * 1. JpaRepository<实体类,主键类型>接口:用来完成基本CRUD操作。 * 2. JpaSpecificationExecutor<实体类>:用来完成复杂的查询,如分页等查询操作。 */ public interface UserRepository extends JpaRepository<User, Integer>, JpaSpecificationExecutor<User> { } ``` **3. 简单的增删改查** JPA可以根据实体自动建表,不需要自己手动到数据库中建表。 ```java @SpringBootTest public class UserRepositoryTest { @Autowired private UserRepository userRepository; /** * 新增一条数据。 * 如果采用批量增加可以使用saveAll方法。 */ @Test public void save() { User user = User.builder().username("张三").password("zhangsan").email("zhangsan@qq.com").build(); User result = userRepository.save(user); System.out.println(result); //User(id=1, username=张三, password=zhangsan, email=zhangsan@qq.com) } /** * 新增与更新用的是同一个方法,如果id已经存在则是更新,否则就是新增。 */ @Test public void update() { User user = User.builder().id(1).username("李四").password("lisi").email("lisi@qq.com").build(); User result = userRepository.save(user); System.out.println(result); //User(id=1, username=李四, password=lisi, email=lisi@qq.com) } /** * 查询可以调用findOne,或者findById函数,findAll等函数,它们都是根据主键来查询。 */ @Test public void findOne() { User user = User.builder().id(1).build(); Example<User> example = Example.of(user); Optional result1 = userRepository.findOne(example); System.out.println(result1.get()); //User(id=1, username=李四, password=lisi, email=lisi@qq.com) } /** * 根据id删除数据。 * 可以调用delete,或者deleteById,或者deleteAll批量删除,它们都是根据主键来删除。 */ @Test public void delete() { User user = User.builder().id(1).build(); userRepository.delete(user); } } ```