博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot--SpringDataJPA生成表 crud数据
阅读量:6664 次
发布时间:2019-06-25

本文共 2666 字,大约阅读时间需要 8 分钟。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/80876966

JPA(Java Persistence API)java持久化规范。

只需要编写一个接口继承一个类就可以进行操作

 
  1. <dependency>
  2. <groupId>mysql
    </groupId>
  3. <artifactId>mysql-connector-java
    </artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.boot
    </groupId>
  7. <artifactId>spring-boot-starter-data-jpa
    </artifactId>
  8. </dependency>
 
  1. @Entity
  2. public
    class User {
  3. //使用这个注解id必须是int
  4. @Id
  5. @GeneratedValue(strategy=GenerationType.AUTO)
  6. private
    long id;
  7. private String name;
  8. @JSONField(format=
    "yyyy-MM-dd HH:mm:ss")
  9. private Date date;
  10. @JSONField(serialize=
    false)
  11. private String notSerilized;
  12. public String getNotSerilized() {
  13. return notSerilized;
  14. }
  15. public void setNotSerilized(String notSerilized) {
  16. this.notSerilized = notSerilized;
  17. }
  18. public String getName() {
  19. return name;
  20. }
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. public Date getDate() {
  25. return date;
  26. }
  27. public void setDate(Date date) {
  28. this.date = date;
  29. }
  30. public long getId() {
  31. return id;
  32. }
  33. public void setId(long id) {
  34. this.id = id;
  35. }
  36. }
会根据@entity标签生成实体表

会根据@id和@GeneratedValue生成数据主键:注意如果使用GeneratedValue那么逐渐必须不是String

生成字段的原则是驼峰 比如oldName --OLD_NAME

repository

创建repository接口继承CRUDRopository

 
  1. public
    interface UserRepository extends CrudRepository<User, Integer>{
  2. }

 
  1. @Service
  2. public
    class UserService {
  3. @Resource
  4. private UserRepository userRepository;
  5. @Transactional
  6. public void save(User user){
  7. userRepository.save(user);
  8. }
  9. @Transactional
  10. public void delete(User user){
  11. userRepository.delete(user);
  12. }
  13. public Iterable<User> findAll(){
  14. return userRepository.findAll();
  15. }
  16. }

 
  1. @RestController
  2. @RequestMapping(value=
    "/user")
  3. public
    class UserController {
  4. @Resource
  5. private UserService userService;
  6. /* @RequestMapping("/save")
  7. public String save(@RequestParam(required=false) User user){
  8. userService.save(user);
  9. return "save ok";
  10. }*/
  11. @RequestMapping(
    "/delete")
  12. public String delete(@RequestParam(required=false) User user){
  13. userService.delete(user);
  14. return
    "delete ok";
  15. }
  16. @RequestMapping(
    "/getAll")
  17. public Iterable<User> findAll(){
  18. return userService.findAll();
  19. }
  20. @RequestMapping(
    "/saveById")
  21. public String saveByName(@RequestParam String name){
  22. User user =
    new User();
  23. user.setName(name);
  24. user.setDate(
    new Date());
  25. userService.save(user);
  26. return
    "save ok";
  27. }
  28. }
1. Repository是一个空接口,即是一个标记接口;

2. 若我们定义的接口继承了Repository,则该接口会被IOC容器识别为一个Repository Bean纳入到IOC容器中,进而可以在该接口中定义满足一定规范的方法。

3. 实际上也可以通过@RepositoryDefinition,注解来替代继承Repository接口。

4. 查询方法以find | read | get开头;

5. 涉及查询条件时,条件的属性用条件关键字连接,要注意的是条件属性以首字母大写。

6.使用@Query注解可以自定义JPQL语句实现更灵活的查询。

PagingAndSortingRepository

该接口提供了分页与排序功能   

 --Iterable<T> findAll(Sort sort); //排序    

--Page<T> findAll(Pageable pageable); //分页查询(含排序功能)
你可能感兴趣的文章
Mybatis Log的实现流程
查看>>
活在当下
查看>>
算法初级笔记(一)认识时间复杂度
查看>>
Anroid 退出所有 activity
查看>>
爬取网站段子
查看>>
SESSION_EXPIRE_AT_BROWSER_CLOSE=True在Chrome下无效
查看>>
mysql autocommit的差异
查看>>
IDEA 设置 classpath
查看>>
Oracle查询第m到第n条数据
查看>>
XStream
查看>>
php笔记
查看>>
springmvc学习笔记(19)-RESTful支持
查看>>
nginx代码分析-基本结构-单链表ngx_list_t
查看>>
使用Xmanager连接centos6.4
查看>>
java之写登录日志
查看>>
SourceTree的基本使用
查看>>
文件的拷贝
查看>>
Android Fragment 真正的完全解析(下)
查看>>
thinkphp切换数据库链接方法汇总
查看>>
mysql大数据量分页场景的查询优化
查看>>