Springboot JPA

Spring data jpa

Spring Data Jpa 极大简化了数据库访问层代码,只要3步,就能搞定一切

  • 本来的Spring Data JPA

    1. 编写Entity类,依照JPA规范,定义实体
    2. 编写Repository接口,依靠SpringData规范,定义数据访问接口(注意,只要接口,不需要任何实现)
    3. 写一小陀配置文件
  • spring data jpa因为使用springboot的原因配置极其简单

使用

1.接口继承JPARepository类

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

2.可以使用JpaRepository内部的方法,也可自己在接口定义自己的方法

    User findById(Integer id);

    User findByUserName(String userName);

    User findByUserNameAndPassword(String username);

    List<User> findByUserNameLike(String username);

    List<User> findByUserNameNotLike(String username);

    List<User> findByUserNameNot(String username);

    @Query("FROM User  AS u WHERE  u.userName=?1 AND u.password IS NOT NULL")
    List<User> findAll(String  userName);

    @Query("update User as u set u.password=?2 where u.userName=?1")
    @Modifying    //spring data jpa  更改某个用户
    @Transactional
    void updatePwd(String userName,String pwd);


    @Query("delete  from User u where u.userName=?1")
    @Modifying      //spring data jpa  删除某个用户
    @Transactional
    void deleteByUserName(String userName);
    @Query("UPDATE  User u SET u.email=:email where u.userName=:user")
    void updateEmail(@Param("user") String userName,@Param("email") String email);
  • 前面几个方法 根本没有定义SQL语句。但是依然可以运行查询出来

原因:

  • Spring Data Jpa提供了一些关键字的查询方法, 都需要以findBy开头,且方法中的字段名必须与实体类中的属性名一致,并遵循驼峰式代码编写风格

And:等价于SQL中的and关键字,比如:findByUserNameAndPassword(String username, String pwd);

Or:等价于SQL中的or关键字,比如:findByUserNameOrEmail(String username, String email);

  • 注解均是jpa的注解,具体可查API。

项目地址:https://github.com/kxinds/SpringBoot

kxind

性别:男. 敢于尝试 爱折腾的死宅程序猿. https://github.com/kxinds