首頁>技術>

SpringBoot與資料訪問SpringBoot的資料處理JDBCMyBatisJPA(Java Persistence API)Spring DataJPA與Spring Data整合JPASpringBoot的資料處理在資料訪問層,無論SQL還是NOSQL,SpringBoot預設採用整合Spring Data的方式進行統一處理.新增大量自動配置,遮蔽很多設定.引入xxxTemplate,xxxRepository來簡化我們對資料的訪問操作JDBC引入starterspring-boot-starter-jdbc

		<dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-jdbc</artifactId>        </dependency>		<dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <scope>runtime</scope>        </dependency>
配置application.yml
spring:  datasource:    username: root    password: 123456    url: jdbc:mysql://192.168.32.251:3306/jdbc    driver-class-name: com.mysql.cj.jdbc.Driver
預設使用org.apache.tomcat.jdbc.pool.DataSource作為資料來源資料來源的相關配置都在DataSourceProperties裡面自動配置原理org.springframework.boot.autoconfigure.jdbc1.DataSourceConfiguration,根據配置建立資料來源,預設使用tomcat連線池,可以使用spring.datasource.type指定自定義的資料來源型別2.SpringBoot預設支援:org.apache.tomcat.jdbc.pool.DataSource,HikaraDataSource,org.apache.commons.dbcp.BasicDataSource,org.apache.commons.dbcp2.BasicDataSource3.自定義資料來源型別
 	@Configuration    @ConditionalOnMissingBean({DataSource.class})    @ConditionalOnProperty(        name = {"spring.datasource.type"}    )    static class Generic {        Generic() {    }        @Bean        public DataSource dataSource(DataSourceProperties properties) {        	// 使用DataSourceBuilder建立資料來源,利用反射建立相應type的資料來源,並且繫結相關屬性            return properties.initializeDataSourceBuilder().build();        }    }

4.DataSourceInitializerInvoker繼承自ApplicationListener :作用:4.1:建立建表語句4.2:執行插入資料的語句sql語句預設只需要將檔案命名為:

schema-*.sql		data-*.sql建表語句預設規則:schema.sql,	schema-all.sql 可以指定位置,這樣就不需要使用檔案命名規則也可以執行 schema:      - classpath:department.sql	

5.操作資料庫SpringBoot自動配置了JdbcTemplate操作資料庫

高階配置:使用druid資料來源1.引入druid依賴2.配置屬性配置druid資料來源監控
/** * @Description :Druid配置類,整合Druid資料來源 * @Author :Chova * @Date :Created 10:21 2019/8/9 */@Configurationpublic class DruidConfig {    @ConfigurationProperties(prefix = "spring.datasource")    @Bean    public DataSource druid(){        return new DruidDataSource();    }    // 配置druid監控    // 1.配置後臺管理Servlet    @Bean    public ServletRegistrationBean statViewServlet(){        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");        Map<String,String> initParameters=new HashMap<>();        initParameters.put("loginUsername","admin");        initParameters.put("loginPassword","123456");        initParameters.put("allow",""); //預設允許所有訪問        bean.setInitParameters(initParameters);        return bean;    }    // 2.配置一個filter    @Bean    public RegistrationBean webStatFilter(){        FilterRegistrationBean bean = new FilterRegistrationBean();        bean.setFilter(new WebStatFilter());        Map<String,String> initParams=new HashMap<>();        initParams.put("exclusions","*.js,*.css,/druid/*");        bean.setInitParameters(initParams);        bean.setUrlPatterns(Arrays.asList("/*"));        return bean;    }}
MyBatis引入mybatis-startermybatis-spring-boot-starter1.配置MyBatis資料來源相關屬性2.給資料庫建表3.建立Java Bean註解模式
@Mapper@Select@Delete@Insert@Update
自定義MyBatis配置規則,給容器中新增一個ConfigurationCustomer使用MapperScan批次掃描包下所有Mappper介面:
@MapperScan(value="com.web.springbootmybatis.mapper")
配置檔案模式
mybatis    config-location: classpath:mybatis/mybatis-config.xml    指定全域性配置檔案位置    mapper-locations: classpath:mybatis/mapper.xml    指定sql對映檔案位置
JPA(Java Persistence API)引入spring-boot-starter-data-jpa配置檔案列印SQL語句建立Entity標註JPA註解建立Repository介面繼承JpaRepositorySpring DataSpring Data是為了簡化構建基於Spring框架應用的資料訪問技術,包括非關係資料庫,Map-Reduce框架,雲資料服務;也包含對關係資料庫的訪問支援特點:1.Spring Data提供使用統一的API來對資料訪問層進行操作,主要是透過Spring Data Commons專案來實現的.2.Spring Data Commons使得在使用關係型資料庫或非關係型資料庫訪問技術時都基於Spring提供的統一標準,包含CRUD,查詢,排序和分頁的相關操作統一的Repository介面1.Repository<T,ID extends Serializable>:統一介面2.RevisionRepository<T,ID extends Serializable,N extends Number & Comparable>:基於樂觀鎖機制3.CrudRepository<T,ID extends Serializable>:基本CRUD操作4.PagingAndSortingRepository<T,ID extends Serializable>:基本CRUD及分頁提供資料訪問模板類 XXXTemplate:MongoTemplate,RedisTemplateJPA與Spring DataJpaRepository基本功能:編寫介面繼承JpaRepository既有crud及分頁基本功能定義符合規範的方法命名:在介面中只需要宣告符合規範的方法,即擁有對應的功能@Query 自定義查詢,定製SQLSpecification查詢(Spring Data JPA支援JPA2.0的Criteria查詢)整合JPA

JPA 基於ORM(Object Relational Mapping)1.編寫一個實體類(bean)和資料表進行對映,並且配置好對映關係

// 使用JPA註解配置對映關係@Entity     // 標註類是一個實體類,即是和資料表對映類@Table(name="tb_user")      // @Table用來定義表的名稱和index規則用來指定和哪個資料表對應.如果省略,則預設的表名就是user,即類名小寫public class User {    @Id     // 表示這是一個主鍵    @GeneratedValue(strategy = GenerationType.IDENTITY)     //表示這是一個自增主鍵    private Integer id;    @Column(name="lastName",length = 100)       // 表示這是對應資料表中的列,可以指定名稱,欄位長度    private String lastName;    @Column     // 省略預設列名就是屬性名    private String email;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getLastName() {        return lastName;    }    public void setLastName(String lastName) {        this.lastName = lastName;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }}

2.編寫一個Dao介面來操作實體類對應的資料表(Repository)

// 繼承JpaRespository來完成對資料庫的操作public interface UserRepository extends JpaRepository<User,Integer> {}

3.在application.yml中對JPA進行配置JpaRepository

spring:  datasource:    url: jdbc:mysql://192.168.32.228/jpa    username: root    password: 123456    driver-class-name: com.mysql.jdbc.Driver  jpa:    hibernate:      # 更新或者建立資料表結構      ddl-auto: update      # 在控制檯顯示sql    show-sql: true

8
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 基於CentOS7的系統管理與運維實戰<二>