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
【Spring】Spring 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,代碼裏面有多個增刪改