美文网首页Dao
4.SpringDataJpa实践笔记

4.SpringDataJpa实践笔记

作者: Vincilovfang | 来源:发表于2018-04-25 21:32 被阅读8次

    SpringDataJpa是Spring提供的对Hibernate的封装接口,使用起来更加方便。
    一、SpringDataJpa
    1、JPA是Java Persistence API,Java持久化API,是SUN公司推出的一套接口,一套标准
    Hibernate是一个具体的ORM的持久层框架,实现了JPA接口

    2、Spring Data是Spring开发团队提供的一套标准API和不同持久层整合技术实现
       Spring Data的出现就是为了简化、统一持久层的各种实现技术API
       Spring Data在项目里以spring-data-commons这个jar存在
    
    3、Spring Data JPA既实现了Spring Data接口,又实现了JPA接口,也是为了简化持久层的开发
       Spring Data JPA在项目里以spring-data-jpa这个jar存在
    
    4、SpringDataJpa原理,参考文档:"SpringDataJpa原理.docx"
        为什么我们只需要写dao层的接口,不需要写实现类?
        核心:Spring AOP的思想
        我们自己写接口StandardRepository
        SpringDataJPA框架提供了SimpleJpaRepository,这是一个目标类
        SpringDataJPA用JDK针对接口代理的形式,产生了一个代理对象
        
        我们只需要提供接口,就可以
        (1)拿到SimpleJpaRepository的所有方法
        (2)拿到自己接口里的所有方法 
    

    二、SpringDataJpa查询Query的使用
    第一种:根据方法命名规则自动生成 findBy
    1)基于一列等值查询 findBy列名 例如:findByName(String name)
    // 根据收派标准名称查询
    public List<Standard> findByName(String name);
    2)基于一列模糊查询findBy列名Like 例如:findByNameLike(String name)
    3)基于两列等值查询findBy列名And列名 例如:findByUsernameAndPassword(String username,String password)
    第二种:不按命名规则写的查询方法,可以配置@Query绑定JPQL语句或者SQL语句
    @Query(value="from Standard where name = ?" ,nativeQuery=false)
    // nativeQuery 为 false 配置JPQL,为true 配置SQL
    public List<Standard> queryName(String name);

    三、@Query+@Modifying注解完成修改、删除操作
    1、修改
    @Query(value="update Standard set minLength=?2 where id =?1")
    @Modifying
    public void updateMinLength(Integer id , Integer minLength);
    2、测试
    Junit单元测试,要添加事务,设置事务不回滚
    @Test
    @Transactional
    @Rollback(false)
    public void testUpdate(){
    standardRepository.updateMinLength(1, 3);
    }

    相关文章

      网友评论

        本文标题:4.SpringDataJpa实践笔记

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