SpringBoot數據庫訪問工具(JdbcTemplate、MyBatis、JPA、Hibernate)
阿新 • • 發佈:2018-09-23
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)