集成SpringDataJpa

一.什么是SpringDataJpa

  • 它是Spring的一个子框架
  • 集成Jpa,让咱们操作数据库变得更加的简单

二.项目导包

  • 能够看懂这里导入了哪些包
  • 也可以理解这些包是做什么的



  4.0.0

  cn.itsource
  aisell
  1.0-SNAPSHOT
  war

  aisell Maven Webapp
  
  http://www.example.com

  
    UTF-8
    4.2.5.RELEASE
    4.3.8.Final
    1.9.0.RELEASE
    2.5.0
    1.6.1
  
  
    
    
      org.springframework
      spring-core
      ${org.springframework.version}
    
    
      org.springframework
      spring-context
      ${org.springframework.version}
    
    
    
      org.springframework
      spring-context-support
      ${org.springframework.version}
    

    
      org.springframework
      spring-tx
      ${org.springframework.version}
    
    
      org.springframework
      spring-jdbc
      ${org.springframework.version}
    
    
      org.springframework
      spring-orm
      ${org.springframework.version}
    
    
      org.springframework
      spring-aop
      ${org.springframework.version}
    
    
      org.springframework
      spring-test
      ${org.springframework.version}
      test
    
    
    
      org.springframework
      spring-web
      ${org.springframework.version}
    
    
      org.springframework
      spring-webmvc
      ${org.springframework.version}
    
    
    
      org.apache.commons
      commons-io
      1.3.2
    
    
    
      commons-fileupload
      commons-fileupload
      1.2.2
    
    
    
      com.fasterxml.jackson.core
      jackson-core
      ${com.fasterxml.jackson.version}
    
    
      com.fasterxml.jackson.core
      jackson-annotations
      ${com.fasterxml.jackson.version}
    
    
      com.fasterxml.jackson.core
      jackson-databind
      ${com.fasterxml.jackson.version}
    
    
    
      org.hibernate
      hibernate-core
      ${org.hibernate.version}
    
    
      org.hibernate
      hibernate-entitymanager
      ${org.hibernate.version}
    
    
    
      org.springframework.data
      spring-data-jpa
      ${spring-data-jpa.version}
    
    
    
      com.github.wenhao
      jpa-spec
      3.1.1
      
      
        
          *
          *
        
      
    

    
      commons-dbcp
      commons-dbcp
      1.2.2
    

    
      mysql
      mysql-connector-java
      5.1.6
    
    
    
      org.apache.commons
      commons-lang3
      3.5
    
    
    
      junit
      junit
      4.12
      test
    
    
      javax.servlet
      javax.servlet-api
      3.1.0
      
      provided
    
    
    
      org.slf4j
      slf4j-api
      ${org.slf4j.version}
    
    
      org.slf4j
      slf4j-log4j12
      ${org.slf4j.version}
      runtime
    
    
      log4j
      log4j
      1.2.14
    
    
    
      org.apache.velocity
      velocity
      1.6
    
    
    
      org.apache.shiro
      shiro-all
      1.4.0
      pom
    
    
    
      org.apache.shiro
      shiro-spring
      1.4.0
    
    
    
      org.apache.poi
      poi
      3.11
    
    
      org.apache.poi
      poi-ooxml
      3.11
    
    
    
    
      net.coobird
      thumbnailator
      0.4.6
    
    
    
      quartz
      quartz
      1.5.2
    
    
    
      javax.mail
      mail
      1.4.1
    
  

  
    aisell
    
      
        org.apache.maven.plugins
        maven-compiler-plugin
        
          1.8
          1.8
        
      
      
        org.mortbay.jetty
        jetty-maven-plugin
        8.1.15.v20140411
        
          9966
          foo
          
            /
          
        
      
    
  

三 集成SpringDataJpa

3.1 完成Spring与Jpa的集成

昨天已经详细讲解过(要求自己是可以把它写出来)

3.1.1 准备jdbc.propeties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///yxb
jdbc.username=root
jdbc.password=123456

3.2.2 准备applicationContext.xml



    
    
    
    
    
    
    
        
        
        
        
    
    
    
        
        
        
        
        
            
                
                
                
                
                
                
            
        
    
    
    
    
        
    
    
    


3.2 集成SpringDataJpa

3.2.1 准备domain(父类)

  1. BaseDomain

jpa中父类domain必需要加上:@MappedSuperclass

/**
 * 泛化:继承关系
 * 在我们JPA,如果要抽取一个父类,就必需加上 @MappedSuperclass
 *  非常明确定的告诉JPA,这是一个用于映射的父类
 */
@MappedSuperclass
public class BaseDomain {
    @Id
    @GeneratedValue
    protected Long id;

   //getter,setter ...
}
  1. Employeee

@Entity
@Table(name = "employee")
public class Employee extends BaseDomain {

    private String username;
    private String password;
    private Integer age;
    private String email;
    //getter,setter ...
   
}

3.2.2 准备Repository接口

/**
 * 关于Employee对象的CRUD(分页排序) 就写完了
 *  泛型一:对哪一个实体做CRUD
 *  泛型二:主键的类型
 */
public interface EmployeeRepository extends JpaRepository {
    ...
}

3.2.3 扫描repository

  • repository 就是咱们过去的dao


   ...

    
    


四.完成的CRUD功能

4.1 基本的CRUD

  • 查询所有:employeeRepository.findAll()
  • 查询一条数据: employeeRepository.findOne(1L)
    • 思考题: findOne与getOne的区别?
  • 添加/修改: employeeRepository.save(employee)
    • 主要看数据库中是否有这个值
  • 删除 : employeeRepository.delete(274L)

4.2 分页和排序

4.2.1 排序

 /**
 * 排序对象
 *  第一个参数:排序的类型(升序还是降序)
 *  第二个参数:排序的属性
 */
Sort sort = new Sort(Sort.Direction.DESC,"age");

List list = employeeRepository.findAll(sort);
list.forEach(e-> System.out.println(e));

4.2.2 分页

注:这里的分页是从0开始的

/**
 * page:第几页(0就是第1页)
 * size:每页条数
 */
Pageable pageable = new PageRequest(0,10);
//分页对象
Page list = employeeRepository.findAll(pageable);

list.forEach(e-> System.out.println(e));

4.2.3 分页+排序

Sort sort = new Sort(Sort.Direction.DESC,"age");
/**
 * page:第几页(0就是第1页)
 * size:每页条数
 * sort:排序对象
 */
Pageable pageable = new PageRequest(0,10,sort);
//分页对象
Page list = employeeRepository.findAll(pageable);

list.forEach(e-> System.out.println(e));

你可能感兴趣的:(JPA)