天天看點

Spring架構(十五)SpringBoot架構+SpringBoot資料通路

目錄

SpringBoot資料通路

關系型資料庫通路

非關系型資料庫通路

SpringBoot資料通路

關系型資料庫通路

1.連接配接池DataSource

Oracle、MySQL、DB2等

dbcp2、c3p0、druid、HikariCP、proxool等
    連接配接池jar包、驅動包
    spring-boot-starter-jdbc引入會預設追加連接配接池(1.x tomcat-jdbc連接配接池、2.x hikari連接配接池)
    在application.properties定義連接配接參數
    在啟動類開啟自動配置@SpringBootApplication

DataSourceAutoConfiguration自動配置元件規則:
    預設按建立Hikari,然後tomcat,dbcp2順序執行

    如果需要建立指定類型連接配接池,可以采用下面配置

    spring.datasource.type=xxx 

2.Spring DAO(JdbcTemplate)

JdbcTemplateAutoConfiguration自動配置元件建立JdbcTemplate對象,使用時直接注入應用。
    建立連接配接池對象(參考上述過程)
    根據表定義實體類
    定義Dao接口

    編寫Dao實作類,注入JdbcTemplate

    @Repository public class JdbcDeptDao implements DeptDao {      @Autowired     private JdbcTemplate jdbcTemplate;      public List<Dept> findAll() {         String sql = "select deptno,dname name,loc from dept";         RowMapper<Dept> rowMapper =              new BeanPropertyRowMapper<Dept>(Dept.class);         return jdbcTemplate.query(sql, rowMapper);     }  } 

3.Spring+MyBatis(mybatis-spring整合包)

<dependency>     <groupId>org.mybatis.spring.boot</groupId>     <artifactId>mybatis-spring-boot-starter</artifactId>     <version>1.3.2</version> </dependency> 

    建立連接配接池對象(參考上述過程)
    根據表定義實體類

    定義Mapper接口+SQL定義

    public interface EmpMapper {     @Select("select * from emp")     public List<Emp> findAll(); } 

    在啟動類前加@MapperScan标記掃描Mapper接口

    @SpringBootApplication @MapperScan(basePackages={"cn.xdl.mapper"})//掃描指定包接口産生Mapper對象放到Spring容器 public class RunBoot {     //... ... } 

4.Spring+JPA(hibernate)

<dependency>     <groupId>org.mybatis.spring.boot</groupId>     <artifactId>spring-boot-starter-data-jpa</artifactId>     <version>1.3.2</version> </dependency> 

    建立連接配接池對象(參考上述過程)

    根據表定義實體類,追加與表映射資訊

    @Entity @Table(name="xdl_receive_address") public class Address implements Serializable{      @Id     @Column(name="id")     private Integer id;      @Column(name="user_id")     private Integer userId;      @Column(name="receive_name")     private String  receiveName;      @Column(name="province")     private String  province;      @Column(name="address")     private String  address;      //... ... } 

    定義Repository接口,可以選擇繼承JpaRepository、PagingAndSortingRepository、CrudRepository等父接口

    public interface AddressRepository extends JpaRepository<Address, Integer>{ } 

    擷取Spring容器調用
           

-5.Spring+Hibernate(以後講)

非關系型資料庫通路

Redis、MongoDB

    1.Spring+Redis(RedisTemplate)

    2.Spring+MongoDB(MongoTemplate)
           

繼續閱讀