SpringBoot学习笔记(14)-整合Spring Data JPA - Go语言中文社区

SpringBoot学习笔记(14)-整合Spring Data JPA



Spring Data Jpa是Spring Data中的一员,Jpa的全称是Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。而Spring Data Jpa则是spring提供的一套简化JPA开发的框架,按照约定好的【方法命名规则】写dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。同时提供了很多除了CRUD之外的功能,如分页、排序、复杂查询等等。

更多关于SpringBoot的总结请点击:SpringBoot使用总结

一、添加依赖

本次用的是Maven作为构建工具,所有在pom.xml中添加Spring Data Jpa的依赖:

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>

二、在application.properties中添加配置信息

##### datasource配置
# 数据库连接名
spring.datasource.username=root
# 数据库连接密码
spring.datasource.password=123
#数据库连接驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 数据库名称以及编码表
spring.datasource.url=jdbc:mysql:///mybatis?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8

#### spring.data的配置
# 数据库选择
spring.jpa.database = MYSQL
# 打印sql
spring.jpa.show-sql = true
# hibernate的启动策略 (create, create-drop, update, validate, none)
spring.jpa.hibernate.ddl-auto = none
# hibernate命名策略
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# hibernate方言
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect


三、为实体类添加注解

要使用Spring Data Jpa,首先要为实体类添加相应的注解,如果不添加这些注解则无法识别与数据库表的对应关系,或报错。

  • User
@Entity //标记为实体类
@Table(name="user") //对应的表
public class User implements Serializable {
    @Id //主键注解
    private Integer id;

    private String name;
  
    private String school;

    private static final long serialVersionUID = 1L;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school == null ? null : school.trim();
    }
}

四、创建自定义的Respository接口

  • UserRespository
/**
 * @Auther: ARong
 * @Date: 2019/1/10 15:48
 * @Description: DATA JAP的使用
 */
@Repository
public interface UserRespository extends JpaRepository<User,Long>{
    /**
     * @auther: Arong
     * @description: 通过name查询User的List
     * @param name
     * @return:  List<User>
     * @date: 2019/1/10 15:52
     */
    List<User> findByName(String name);

    /**
     * @auther: Arong
     * @description: 通过name删除
     * @param name
     * @return:
     * @date: 2019/1/10 19:52
     */
    @Modifying //update、delete一定要加这两个注解,不然报错
    @Transactional
    void deleteByName(String name);

}

五、创建JPA配置类

/**
 * @Auther: ARong
 * @Date: 2019/1/10 16:05
 * @Description: Jpa的配置类
 */
@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@EntityScan(basePackages = {"com.iteason.springbootdatajpa.entity"}) //实体包扫描
@EnableJpaRepositories(basePackages = {"com.iteason.springbootdatajpa.dao"})//Respository包扫描

@EnableAutoConfiguration
public class JpaConfiguration {

    @Bean
    PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor() {
        return new PersistenceExceptionTranslationPostProcessor();
    }
}

六、单元测试

  • DataJpaTest
/**
 * @Auther: ARong
 * @Date: 2019/1/10 15:54
 * @Description: 测试Data Jpa
 */
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@ContextConfiguration(classes = JpaConfiguration.class)
public class DataJpaTest {

    @Autowired
    private UserRespository userRespository;

    @Test
   public void fun1(){
        //调用User的Jpa接口
        List<User> userList = userRespository.findByName("arong1");
        //流式遍历
        userList.stream().forEach(n-> System.out.println(n.getName()));
    }

    @Test
    public void fun2(){
       userRespository.deleteByName("arong666");
    }

}

七、查询关键字定义

在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/pbrlovejava/article/details/86253021
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢