1. 程式人生 > >spring boot使用mysql

spring boot使用mysql

    使用資料庫是開發基本應用的基礎。藉助於開發框架,我們已經不再編寫原始的訪問資料庫的程式碼,也不用呼叫JDBC或者連線池等諸如此類的被稱作為底層的程式碼了。spring boot包含了一個功能強大的資源庫,為使用spring boot的開發者提供了更加簡便的介面進行訪問。

    一、使用MySQL:

        對於傳統關係型資料庫來說,spring boot使用JPA資源庫來實現對資料庫的操作,JPA就是為POJO提供持久化的標準規範,即將java的普通物件通過物件關係對映ORM持久化到資料庫中。

    1、MySQL依賴配置:

<dependencies>
    <dependency>
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>
runtime</scope> </dependency> </dependencies>

    2、實體建模:

        首先建立一些普通物件,用來與資料庫的表建立對映關係,然後使用JPA對資料庫進行增刪改查等存取操作。        

@Entity
@Table(name = "user")
public class User implements java.io.Serializable{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id
; private String name; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createdate; public User() { } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getCreatedate() { return createdate; } public void setCreatedate(Date createdate) { this.createdate = createdate; } }

    3、實體持久化

    以上已使用普通物件(POJO)與資料庫建立對映關係(ORM),接下來使用JPA實現持久化。

    User實體使用JPA進行持久化如下所示。它是一個介面,並繼承於JPA資源庫JpaRepository介面,使用註解@Repository將這個介面也定義為一個資源庫,使他能被其他程式引用,併為其他程式提供存取資料庫的功能。

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    User findByNameLike(String name);
User readByName(String name);
List<User> getByCreatedateLessThan(Date star);
}
    這樣就實現存取資料庫的功能了,現在可以對資料庫進行增刪改查、分頁查詢、指定排序的欄位等操作了。

    使用JPA不需要對介面有任何實現的程式碼,也不需要SQL語句。JpaRepository繼承於PagingAndSortingRepository,提供了分頁和排序功能,PagingAndSortingRepository繼承於CrudRepository,提供了簡單的增刪改查功能。

    JPA還提供了一些自定義宣告方法的規則,如,findBy、readBy,getBy作為方法名的字首,拼接實體類中的屬性欄位,首字母大寫,並可選拼接一些SQL查詢關鍵字來組合成一個查詢方法。如上面程式碼。

    4、測試驗證:

    增加一個JPA配置類,其中@EnableTransactionManagement 啟用了JPA的事務管理;@EnableJpaRepositories啟用了JPA資源庫並指定了上面定義的介面資源庫的位置;@EntityScan指定了定義實體的位置,他將匯入我們定義的實體。

@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@EnableJpaRepositories(basePackages = "dbdemo.**.repository")
@EntityScan(basePackages = "dbdemo.**.entity")
public class JpaConfiguration {

    @Bean
PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor(){
        return new PersistenceExceptionTranslationPostProcessor();
}

}

    需要本地安裝MySQL資料庫,之後建立一個數據庫,可以自定義命名為“shenchong”,配置密碼123456。資料庫的表結構不用建立,在程式執行的時候將會按照實體的定義自動建立。

    然後在application.yml中新增配置,用來設定資料來源和JPA的工作模式:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/shenchong?useSSL=false
    username: root
    password: 123456
  jpa:
    database: MYSQL
show-sql: true
#Hibernate ddl auto (validate|create|create-drop|update)
hibernate:
      ddl-auto: update
naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL5Dialect

    5、編寫測試程式:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {JpaConfiguration.class})
public class MysqlTest {
    private static Logger logger = LoggerFactory.getLogger(MysqlTest.class);
@Autowired
UserRepository userRepository;@Before
public void initData(){
        userRepository.deleteAll();User user = new User();
user.setName("user");
user.setCreatedate(new Date());userRepository.save(user);
Assert.notNull(user.getId());
}

    @Test
public void findPage(){
        Pageable pageable = new PageRequest(0, 10, new Sort(Sort.Direction.ASC, "id"));
Page<User> page = userRepository.findAll(pageable);
Assert.notNull(page);
        for(User user : page.getContent()) {
            logger.info("====user==== user name:{}",user.getName());
}
    }

相關推薦

7.Spring切入點的表達式和通知類型

ice span rac 後置 owin err logs 異常 環繞 1.切入點的表達式 表達式格式: execution([修飾符] 返回值類型 包名.類名.方法名(參數)) 其他的代替: <!-- 完全指定一個方法 --> <!-- <a

Spring Boot 之annotation註解

頁面 osi 數據 加載 依賴註入 bsp 類型 數據庫 聲明 一:基於類的註解:(1)初始裝載@SpringBootApplication spring-boot程序入口標誌類@Configuration

Spring Boot 簡介

bsp 外部依賴 快速開發框架 開發框架 天然 servlet 版本 jdk 特點 Spring boot 是 Spring開源中的一個子項目,是一個快速開發框架。 他的一些特點: 1. 快速構建項目 2. 對主流的開發框架無配置集成 3. 項目可獨立運行,無須外部依賴

Spring 基礎知識 - 依賴註入

ans factory control 自己 int pac java str actor 所謂的依賴註入是指容器負責創建對象和維護對象間的依賴關系,而不是通過對象本身負責自己的創建和解決自己的依賴。 依賴註入主要目的是為了解耦,體現了一種“組合”的理念。 無論是xml配置

【面試】【Spring常見問題總結】【06】

類名 truct htm 持久化框架 type 兩個 請求 method val 【常見面試問題總結文件夾>>>】 51、spring中的applicationContext.xml能不能改為其它名字 ContextLoaderListene

day39-Spring 08-Spring的AOP:基於AspectJ的註解

ima spring mage 開發 技術 asp day3 cnblogs ring 基於AspectJ的註解的開發要重點掌握. day39-Spring 08-Spring的AOP:基於AspectJ的註解

spring

release epo -- jar包 enc 鏈接 eas pri 版本 1.下載相關jar包 http://repo.spring.io/release/org/springframework/spring/2.5.3/ 在spring官網,選擇PROJECT-->

第四章 Spring.Net 如何管理您的類___對象的手動裝配

div 委托 其它 .net else 基礎 只需要 構造器 事件觸發 前面我們知道了什麽是對象,什麽是對象工廠,什麽是應用程序上下文。這一次我們來看一下對象的裝配。   Spring.Net 中有多種裝配對象的方式,裝配這個詞可能比較學術化,我們可以理解為對象的創建。

Spring】使用Spring和AMQP發送接收消息(上)

com load 設定 支持 消息發送 結果 alt 來看 接下來 講AMQP之前,先講下傳統的JMS的消息模型,JMS中主要有三個參與者:消息的生產者、消費者、傳遞消息的通道(隊列或者主題),兩種消息模型如下:通道是隊列: 通道是隊列: 通道是主題: 在JMS中,雖然

spring mvc3.1 @ResponseBody註解生成大量Accept-Charset

ole converter pre catch 字符 註意 trac rri 註解 Spring3 [email protected]/* */(Accept-Charset會達到4K+)。原因在於默認情況下StringHttpMessageConverte

day39-Spring 11-Spring的AOP:基於AspectJ的XML配置方式

asp 技術 mage bsp aop src xml配置方式 img aspectj day39-Spring 11-Spring的AOP:基於AspectJ的XML配置方式

day39-Spring 12-Spring的JDBC模板:快速入門

pri 哪些 困難 ces 5.0 使用 只需要 common commons Spring AOP的關鍵是它的底層的原理和思想,配置和使用並不是十分困難.AOP本身就是一個思想,是面向對象的延伸,不是用來替換面向對象的,而是用來解決面向對象中的一些問題的.在最初的時候提出

spring boot環境配置

project fda new 信息 fig 比較 fab imp image Eclipse+Maven創建webapp項目<一> 1、開啟eclipse,右鍵new——》other,如下圖找到maven project 2、選

Spring中使用Map、Set、List、數組、屬性集合的註入方法配置文件

查看 main list highlight 配置 spring配置 pla lec while (1)下邊的一個Java類包含了所有Map、Set、List、數組、屬性集合等這些容器,主要用於演示spring的註入配置; [java] view plain c

SpringSpring MVC原理及配置詳解

進行 return sub sca scrip uil 線程安全 松耦合 必須 1.Spring MVC概述: Spring MVC是Spring提供的一個強大而靈活的web框架。借助於註解,Spring MVC提供了幾乎是POJO的開發模式,使得控制器的開發和測試更加簡

Spring+SpringMVc+Mybatis實現數據庫查詢

java代碼 格式 jdb web.xml配置 set ransac load idle name 大家好,本篇博客小Y將會給大家帶來一篇SSM框架實現數據查詢的Demo,使用的數據庫是Mysql,Server是TomCat.現在的SSM整合非常流行,因為springm

day39-Spring 16-Spring的JDBC模板:設置參數到屬性文件

pro sna tex rop 幫我 combo odin c3p0連接池 asi <?xml version="1.0" encoding="UTF-8"?> <!-- 引入beans的頭 --> <beans xmlns="http://

JRebel熱部署spring mvc時發生的異常。

spring error JRebel: ERROR org.zeroturnaround.bundled.javassist.CannotCompileException: [source error] no such class: handlerMethods at org.zer

Spring Boot的單元測試(Unit Test)

java spring boot unit test 最近做了一些Spring Boot單元測試方面的東西,總結一下。單元測試盡量要和Spring Boot框架減少耦合度,當你在測試某一項功能點是需要mock太多的對象時你就應該意識到這個功能點的耦合度太高了使用Constructor Inject

spring 事務相關

exce nsa only starting bsp don nal tar nbsp @Transactional事務加上 ,然後就是會報 Lock wait timeout exceeded; try restarting transaction,代碼裏面有多個增刪改