美文网首页
Spring整合spring data jpa步骤

Spring整合spring data jpa步骤

作者: 長得太帥忚四種檌 | 来源:发表于2018-07-05 11:25 被阅读24次

1.添加spring data jpa的依赖到pom文件中

        <!-- spring data jpa 数据库持久层 -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>${springdatajpa.version}</version>
        </dependency>

2.配置applicationContext.xml

    <!-- 整合spring data jpa -->
    <jpa:repositories base-package="com.gongxm.dao" />

3.创建包, 并在包中创建接口

包: com.gongxm.dao

接口:
public interface BookRepository extends JpaRepository<Book, Integer> { // Book是实体类, Integer是Book类对应表的主键

}

4.接口不需要写对应的实现类, spring data jpa会自动生成实现类

只需要在Service类中注入DAO即可使用:

    //注入DAO
    @Autowired
    BookRepository bookRepository ;

5.定义的接口中, 如果没有定义方法 , 默认会有继承的CRUD方法, 如果需要增加额外的方法, 有以下三种方式:

第一种: 能过命名规则方式定义方法

例如:
public User findByName(String name);  //自动根据用户名查找数据

public List<User> findByNameLike(String name); //根据姓名模糊查询到用户对象

public User findByUsernameAndPassword(String username,String password); //根据用户名和密码查询

第二种方式: 通过注解方式

@Query(value="from Book where author=?", nativeQuery=false) 
public List<Book> queryBook(String author); //查询该作者的所有书籍

注意: 如果nativeQuery为false, 表示value中配置的是JPAQL, 如果nativeQuery为true,表示value中配置的是SQL

第三种方式: 在bean类上添加注解和JPAQL

1.接口中的方法这里不需要添加参数了, 只需要写注解即可
@Query  
public List<Book> queryBook(String author); //查询该作者的所有书籍

2.在对应的bean类中添加注解和JPAQL:
@Entity
@Table(name = "T_BOOK")
//在这里可以配置多个方法的JPAQL语句
@NamedQueries({@NamedQuery(name="Book.queryBook",query="from Book where author=?")})
public class Book{
   ......
}

6.修改数据

使用spring data jpa修改数据, 单单@Query这个注解是无法完成的. 如果需要修改数据,还需要使用@Modifying注解来配合才可以完成:

    @Query(value="update Book set name=?2 where id=?1")
    @Modifying
    public void updateName(Integer id,String name);

注意: 如果语句中的参数与方法中的参数顺序不同, 可以修改方法参数的顺序, 或者在语句中的问号后面加上序号, 表示使用方法中的第几个参数

7. 关于测试用例的注意事项

1.测试类上需要加入以下注解

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= "classpath:applicationContext.xml")
public class MyTest {
    @Test
    public void test() {
        System.out.println("yes");
    }
}

2.如果是测试DAO类, 测试方法上除了要加@Test注解, 还需要加事务注解

    @Test
    @Transactional
    public void test() {
        ...
    }

3.使用测试用例来测试DAO类时, 默认会把本次测试的数据从数据库中回滚, 如果不想数据回滚, 可以在方法上加上@Rollback注解

    @Test
    @Transactional
    @Rollback(false)  //防止数据回滚
    public void test() {
        ...
    }

相关文章

网友评论

      本文标题:Spring整合spring data jpa步骤

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