美文网首页SpringBoot专题JavaWeb技术
Spring Boot整合SpringDataJPA

Spring Boot整合SpringDataJPA

作者: 问题_解决_分享_讨论_最优 | 来源:发表于2020-01-10 10:32 被阅读0次

    一、SpringDataJPA

    在这里插入图片描述 在这里插入图片描述

    spring data:其实就是spring 提供的一个操作数据的框架。而spring data JPA 只是spring data 框架下的一个基于JPA标准操作数据的模块。

    spring data jpa :基于JPA的标准对数据进行操作。简化操作持久层的代码,只需要编写接口就可以。


    在这里插入图片描述
    使用jpa的命名查询

    当使用findBy/readBy/getBy + 某个字段时,比如:
    User findById(String id);
    也可以多字段查询,如:
    List<User> findByCodeAndUsername(String code,String username);
    spring jpa的相关命名规则如下:

    在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述
    自定义注解查询

    除了继承JpaRepository中的命名方法,有时候不可避免的要自定义查询方法。上面的单元测试中findOne就是自定义的查询方法。

    使用@Query注解来查询,注解查询本质上仍然使用的是HQL语法,所以下面的是针对对象查询的。(我在测试时由于粗心大意将User写成user被坑了不少时间)

    @Query("select u from User u where u.id = :id")
    User findOne(@Param("id")String id);
    

    二、整合SpringDataJPA

    pom文件引入以下依赖
    <dependencies>
        <!-- Spring Boot web依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- JPA的起步依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!-- MySQL连接驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>
    
    创建数据库
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(50) DEFAULT NULL,
      `password` varchar(50) DEFAULT NULL,
      `name` varchar(50) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
    
    INSERT INTO `user` VALUES ('1', 'zhangsan', '123', '张三');
    INSERT INTO `user` VALUES ('2', 'lisi', '123', '李四');
    
    application.properties配置
    #DB Configuration:
    spring.datasource.driverClassName=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
    spring.datasource.username=root
    spring.datasource.password=root
    
    #JPA Configuration:
    spring.jpa.database=mysql
    spring.jpa.show-sql=true
    spring.jpa.generate-ddl=true
    spring.jpa.hibernate.ddl-auto=update
    
    代码编写

    创建实体配置实体

    @Entity
    @Table(name = "user")
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column
        private Integer id;
        @Column
        private String username;
        @Column
        private String password;
        @Column
        private String name;
        //此处省略setter和getter方法... ...
    }
    

    UserDao

    public interface UserDao extends JpaRepository<User, Integer> {
    }
    

    UserService

    @Service
    public class UserServiceImpl implements UserService {
        @Autowired
        private UserDao userDao;
    
        @Override
        public User findUserById(int id) {
            Optional<User> optional = userDao.findById(id);
            return optional.get();
        }
    }
    

    Controller

    @RestController
    public class UserController {
        @Autowired
        private UserService userService;
    
        // http://localhost:8080/user/1
        @RequestMapping("/user/{id}")
        private User findUserById(@PathVariable Integer id) {
            User user = userService.findUserById(id);
            return user;
        }
    }
    

    打个广告,本人博客地址是:风吟个人博客

    相关文章

      网友评论

        本文标题:Spring Boot整合SpringDataJPA

        本文链接:https://www.haomeiwen.com/subject/jirpactx.html