1. 程式人生 > >SpringBoot數據庫訪問工具(JdbcTemplate、MyBatis、JPA、Hibernate)

SpringBoot數據庫訪問工具(JdbcTemplate、MyBatis、JPA、Hibernate)

etl find tiger con repo 定義 pid auto 關系型數據庫

SpringBoot數據庫訪問

關系型數據庫訪問(RDBMS)

采用JdbcTemplate、MyBatis、JPA、Hibernate等技術。

一、JdbcTemplate工具

1.在pom.xml添加boot-starter-jdbc定義<dependencies> 數據庫驅動

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    <version>2.0.1.RELEASE</version>
  </dependency>
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>

</dependencies>

2.在application.properties添加鏈接參數定義

spring.datasource.username=SCOTT
spring.datasource.password=TIGER
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
spring.datasource.driverClassName=oracle.jdbc.OracleDriver

3.根據DEPT表編寫Dept實體類

public class Dept implements Serializable{
    private Integer deptno;
    private String dname;
    private String loc;
    //set和get省略
}

4.定義DeptDao接口

public interface DeptDao {
    public List<Dept> findAll();
}

5.定義JdbcDeptDao實現類

@Repository("deptDao")
public class JdbcDeptDao implements DeptDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List<Dept> findAll() {
        String sql = "select * from DEPT";
        //BeanPropertyRowMapper功能同名加載。查詢結果集列名和實體類屬性名一致
        RowMapper<Dept> rowMapper = new BeanPropertyRowMapper<Dept>(Dept.class);
        List<Dept> list = jdbcTemplate.query(sql, rowMapper);
        return list;
    }

}

6.定義主啟動類,開啟自動配置和掃描等功能

@SpringBootApplication
public class MyBootApplication {

}

7.測試程序

public static void main(String[] args) {
    ApplicationContext ac = 
        SpringApplication.run(MyBootApplication.class);
    DeptDao deptDao = ac.getBean("deptDao",DeptDao.class);
    List<Dept> list = deptDao.findAll();
    for(Dept dept:list){
        System.out.println(dept.getDeptno()
            +" "+dept.getDname()+" "+dept.getLoc());
    }
}

四、JPA工具

1.在pom.xml追加boot-jdbc、boot-data-jpa包定義 、數據庫驅動

<parent>
   <!-- 設置boot版本控制 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.RELEASE</version> </parent> <properties>
  <!-- 設置字符集utf-8 jre版本1.8--> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency>
    <!-- jpa基於jdbc --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency>
    <!-- 數據庫驅動 --> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3</version> </dependency> <dependency>
    <!-- jpa --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> </dependencies>

2.在application.properties文件追加數據庫連接參數定義

spring.datasource.username=SCOTT
spring.datasource.password=TIGER
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
spring.datasource.driverClassName=oracle.jdbc.OracleDriver

3.根據DEPT表編寫Dept實體類,並追加映射註解標記(可用jpa逆向生成工程)

@Entity
@Table(name="DEPT")
public class Dept implements Serializable{

    @Id
    @Column(name="DEPTNO")
    private Integer deptno;

    @Column(name="DNAME")
    private String dname;

    @Column(name="LOC")
    private String loc;

    //省略set和get方法       

}

4.定義DeptDao接口,可以繼承JpaRepository

public interface DeptDao extends JpaRepository<Dept, Integer>{  //Dept 為eitity類型 Integer為主鍵類型

}

Repository:頂級接口,無任何操作

CrudRepository:繼承了Repository,增加了增刪改查操作方法

PagingAndSortingRepository:繼承CrudRepository,增加了分頁和排序操作

JpaRepository:繼承了PagingAndSortingRepository,增加批處理操作

5.測試程序

public static void main(String[] args) {
    ApplicationContext ac = 
        SpringApplication.run(MyBootApplication.class, args);
    DeptDao deptDao = ac.getBean("deptDao",DeptDao.class);
    List<Dept> list = deptDao.findAll();
    for(Dept dept:list){
        System.out.println(dept.getDeptno()+" "+dept.getDname());
    }
}
 
 
 


 
 
 
 
 

SpringBoot數據庫訪問工具(JdbcTemplate、MyBatis、JPA、Hibernate)